千家信息网

mysql数据库中怎么处理重复数据

发表于:2024-10-28 作者:千家信息网编辑
千家信息网最后更新 2024年10月28日,这篇文章给大家介绍mysql数据库中怎么处理重复数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。方法一:防止出现重复数据也就是说我们再设计表的时候,就应该对这些数据设置一个UN
千家信息网最后更新 2024年10月28日mysql数据库中怎么处理重复数据

这篇文章给大家介绍mysql数据库中怎么处理重复数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

方法一:防止出现重复数据

也就是说我们再设计表的时候,就应该对这些数据设置一个UNIQUE 索引,在插入的时候就可以保证其唯一性,也就不存在有重复的数据了。当然你也可以直接设置为PRIMARY KEY(主键)。效果也是一样的。
我们看一个案例:下表中无索引及主键,所以该表允许出现多条重复记录。

CREATE TABLE student
(
first_name CHAR(20),
last_name CHAR(20),
sex CHAR(10)
);

目前first_name,last_name是可以重复的,如果不想重复这里有两个解决办法:

1、设置双主键模式

CREATE TABLE student
(
first_name CHAR(20) NOT NULL,
last_name CHAR(20) NOT NULL,
sex CHAR(10),
PRIMARY KEY (last_name, first_name)
);

现在就无法插入重复数据了。

2、添加unique索引

CREATE TABLE student
(
first_name CHAR(20) NOT NULL,
last_name CHAR(20) NOT NULL,
sex CHAR(10)
UNIQUE (last_name, first_name)
);

这两种看起来形式好像有一点区别,但是能起到相同的作用。此时我们可以插入两条重复的数据,会发现报错。

当然我们还可以在数据库中去验证一下:

SELECT COUNT(*) as repetitions, last_name, first_name
FROM student
GROUP BY last_name, first_name
HAVING repetitions > 1;

在这里我们统计的是 first_name 和 last_name的重复记录数,上面已经用两种方法设置了,这里肯定就是0了。

方法二:在插入时指定能否插入重复数据

在这里我们使用的是Insert ignore into 与Insert into指令。

(1)Insert ignore into会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

(2)Insert into则直接相反,会直接插入数据,不管数据库里面是否含有重复数据。

我们还是举例说明:

insert ignore into student (last_name, first_name) values ( '张三', '李四');
//结果
Query OK, 1 rows affected (0.00 sec)
insert ignore into student (last_name, first_name) values ( '张三', '李四');
//结果
Query OK, 0 rows affected (0.00 sec)

现在我们看出来了吧,也就是说在执行第一条插入操作的时候,看到数据库没有,则直接插入一条新纪录,因此一行记录受到影响,但是在第二次插入的时候,数据库已经有一条一样的了,因此便不会插入了,0行受到影响。
当然了还有一个指令也可以完成类似于insert ignore into相似的功能,那就是replace into。他表示的是如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。

方法三:过滤重复数据

如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。

SELECT DISTINCT last_name, first_name
FROM student
ORDER BY last_name;

你也可以使用 GROUP BY 来读取数据表中不重复的数据:

SELECT last_name, first_name
FROM student
GROUP BY (last_name, first_name);

方法四:删除重复数据

这种情况其实就相当于,在水的终点处去解决。看下面sql语句:

//根据student创建一个临时表,并使用group by过滤了重复数据
CREATE TABLE tmp SELECT last_name, first_name, sex
FROM student;
GROUP BY (last_name, first_name);
//删除原student表
DROP TABLE student;
//给这个临时表重新命名
ALTER TABLE tmp RENAME TO stu;

当然你也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:

ALTER IGNORE TABLE student
ADD PRIMARY KEY (last_name, first_name);


关于mysql数据库中怎么处理重复数据就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 数据库 方法 时候 索引 处理 相同 也就是 也就是说 内容 就是 指令 数据表 更多 结果 语句 张三 李四 帮助 影响 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 apex国内玩什么服务器 数据库的驾校预约课程设计 pdu服务器专用电源厂家报价 黄山企业软件开发 数据库管理 视频教程 怎么在万方里面找数据库 邯郸市软件开发值得买吗 网络安全交流信息 数据库查询所有学生考试成绩信息 华安互联网科技有限公司招聘 网络安全属于什么学术 上海金融数据库有限公司 威海 网络安全 协会 阿里吞金兽服务器价格 模拟城市连接服务器失败怎么办 网络准入 安全 服务器 如何将2010数据库拆分 安徽5g服务器标准机柜虚拟主机 希望互联网科技 重庆协创网络技术有限公司 sql数据库备份到指定路径 立讯软件开发能学到东西吗 网络安全运维服务考核 数据库先分组后排序 网络安全员人社部 网络技术服务的资质 历任省公安厅公共信息网络安全 计算机网络技术的职业生涯 搭建流媒体服务器方法 淘无限网络技术有限公司
0