@TOC

1、解决反复数据

1.1、避免表中呈现反复数据

  • 能够在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(惟一) 索引来保证数据的唯一性。

  • 设置表中字段数据不能反复,能够设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为 NULL,可设置为 NOT NULL
  • NSERT IGNORE INTO 与 INSERT INTO 的区别:
INSERT IGNORE:会疏忽数据库中曾经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就能够保留数据库中曾经存在数据,达到在间隙中插入数据的目标

  • INSERT IGNORE INTO和 REPLACE INTO区别:
INSERT IGNORE INTO:当插入数据时,在设置了记录的唯一性后,如果插入反复数据,将不返回谬误,只以正告模式返回。
REPLACE INTO :如果存在primary 或 unique 雷同的记录,则先删除掉。再插入新记录。

1.2、统计反复数据

统计study_tb8中name、old、sex呈现的重读记录数

查问反复的值,操作步骤:确定哪一列蕴含的值可能会反复;在列抉择列表应用COUNT(*)列出的那些列;在GROUP BY子句中列出的列;HAVING子句设置反复数大于1。

1.3、过滤反复数据

读取不反复的数据能够在 SELECT 语句中应用 DISTINCT 关键字来过滤反复数据。

1.4、读取不反复数据

应用 GROUP BY 来读取数据表中不反复的数据

1.5、删除反复数据


也能够在数据表中增加 INDEX(索引) 和 PRIMAY KEY(主键)这种简略的办法来删除表中的重复记录

2、SQL 注入

略(后续独自补充,SQL注入平安问题)

3、导出数据

MySQL中你能够应用SELECT...INTO OUTFILE语句来简略的导出数据到文本文件上

3.1、应用 SELECT ... INTO OUTFILE 语句导出数据

将sutdy_tb1中的数据导出到my_study_tb1.txt中



后果还是报错,最终找到答案https://blog.csdn.net/NoamaNelson/article/details/105712193

3.1.1、SELECT ... INTO OUTFILE 语句有以下属性

  • LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。为了将一个数据库的数据写入一个文件,应用SELECT ... INTO OUTFILE,为了将文件读回数据库,应用LOAD DATA INFILE。
  • SELECT...INTO OUTFILE 'file_name'模式的SELECT能够把被抉择的行写入一个文件中。该文件被创立到服务器主机上,因而您必须领有FILE权限,能力应用此语法。
  • 输入不能是一个已存在的文件。避免文件数据被篡改。
  • 你须要有一个登陆服务器的账号来检索文件。否则 SELECT ... INTO OUTFILE 不会起任何作用。
  • 在UNIX中,该文件被创立后是可读的,权限由MySQL服务器所领有。这意味着,尽管你就能够读取该文件,但可能无奈将其删除。

3.2、导出 SQL 格局的数据


3.3、导出表作为原始数据

  • mysqldump 是 mysql 用于转存储数据库的实用程序。它次要产生一个 SQL 脚本,其中蕴含从头从新创立数据库所必须的命令 CREATE TABLE INSERT
  • 应用 mysqldump 导出数据须要应用 --tab 选项来指定导出文件指定的目录,该指标必须是可写的。

3.4、将数据表及数据库拷贝至其余主机


你也能够应用以下命令将导出的数据间接导入到近程的服务器上,但请确保两台服务器是相通的,是能够互相拜访的:

mysqldump -u root -p database_name | mysql -h other-host.com database_name

4、导入数据

4.1、mysql 命令导入

同3.4示例

mysql -u用户名    -p明码    <  要导入的数据库数据(runoob.sql)

4.2、source 命令导入


4.3、应用 LOAD DATA 导入数据

4.4、应用 mysqlimport 导入数据

mysqlimport -u root -p --local databasename 文件名

mysqlimport的罕用选项介绍:

选项性能
-d or --delete新数据导入数据表中之前删除数据数据表中的所有信息
-f or --force不论是否遇到谬误,mysqlimport将强制持续插入数据
-i or --ignoremysqlimport跳过或者疏忽那些有雷同惟一 关键字的行, 导入文件中的数据将被疏忽。
-l or -lock-tables数据被插入之前锁住表,这样就避免了, 你在更新数据库时,用户的查问和更新受到影响。
-r or -replace这个选项与-i选项的作用相同;此选项将代替 表中有雷同惟一关键字的记录。
--fields-enclosed- by= char指定文本文件中数据的记录时以什么括起的, 很多状况下 数据以双引号括起。 默认的状况下数据是没有被字符括起的。
--fields-terminated- by=char指定各个数据的值之间的分隔符,在句号分隔的文件中, 分隔符是句号。您能够用此选项指定数据之间的分隔符。 默认的分隔符是跳格符(Tab)
--lines-terminated- by=str此选项指定文本文件中行与行之间数据的分隔字符串 或者字符。 默认的状况下mysqlimport以newline为行分隔符。 您能够抉择用一个字符串来代替一个单个的字符: 一个新行或者一个回车。

mysqlimport 命令罕用的选项还有 -v 显示版本(version), -p 提醒输出明码(password)