mysql处理数据重复
防止出现重复数据:设置主键(primary key)和唯一主键(unique)保证数据的唯一性。
如果我们设置唯一主键,那么在插入表中已有的数据时,sql将无法执行,并抛出错误。
插入:
而当我们使用 insert ignore into 表名(字段名)values(值) 时,如果数据库已经有此条数据了,那么此条信息将不能插入到数据库,如果表中没有则会正常执行。
替换
而我们使用 replace into 表名 (字段名)values(值) 时,如果数据库存在此数据,则先删除原有的数据再添加。
查询
统计重复数据:select count(*)as 总数别名,可能出现重复的字段名 from 表名
例:select count(*) as sum, tao, che from taoche group by tao having sum>1
过滤
过滤重复数据,如果需要查询结果没有重复数据,则可以使用 distinct 关键字过滤掉重复的数据
例:select distinct tao from taoche
删除
添加主键操作,进行删除重复数据:alter ignore table 表名 add primary key(字段名)
例:alter ignore table taoche add primary key(tao)
sql注入
sql注入即通过sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令。
我们永远不要相信用户输入,必须认定用户输入是有危险的。所以我们必须对用户的输入进行一定的限制与过滤处理,防止恶意输入造成数据损失。
防止sql注入:限制输入长度,对引号和下滑线进行转换;不使用拼装的sql;使用独立权限进行数据库连接;对密码等敏感信息进行加密处理等。
mysql导出数据
将数据导出到文件中
语法:select 字段 from 表名 INTO OUTFILE 文件名 -->导出数据到指定文件中
例:select * from taoche into outfile ‘E:\taoche.txt’
将taoche表中的数据写入E盘的taoche.txt
可能会出现错误如下:
这个意思是mysql中的ini文件中的 --secure-file-priv 设置有问题,那么我们可以去mysql的安装目录下找到my.ini文件将 --secure-file-priv 这一项的值改为空,然后重启mysql服务,之后我们就可以导出到任何地方了。
将数据导出作为原始数据
mydump是转存储数据库的实用程序。其中包含创建数据库的create,insert等命令,是一个sql脚本
导出整个数据库的数据:mysump -u root -p123456 数据库名 > 文件名
备份整个数据库:mydump -u root -p 123456 --all-database > file_name.txt
mysql导入数据
-
mysql命令导入:mysql -u用户名 -p密码 < sql文件
以上命令是将备份的整个数据库导入 -
source命令导入:此命令导入需要先登录到数据库终端,一共有四步:
create database 数据库名 -->创建数据库
use 数据库名 -->进入数据库
set names utf8 -->设置编码
source 备份的数据库 -->将备份的数据库导入 -
使用load data infile 导入:load data local(本地) infile ‘文件名’ into table 表名
local 关键词表示从本地客户主机中按路径读取数据。
例:load data local infile ‘taoche.txt’ into table taoche
将taoche.txt文件中的数据按照默认数据导入到taoche表中