网易首页 > 网易号 > 正文 申请入驻

MySQL数据库怎么学好

0
分享至

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过滤了重复数据

//根据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);

OK,解决办法这么多,相信能解决你的问题。

  • 文章出自:http://www.cnitedu.cn/it/new/202110615.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
闹大了! 云南部分红薯“种植户”使用高毒农药,连自己都不敢吃

闹大了! 云南部分红薯“种植户”使用高毒农药,连自己都不敢吃

娱乐圈的笔娱君
2026-01-24 05:41:56
“私募魔女”12888元投资课开始了!小红书才被封

“私募魔女”12888元投资课开始了!小红书才被封

财通社
2026-01-24 23:47:08
拿1.85亿合同,NBA版“东施效颦”!你再这么打,可能要被交易

拿1.85亿合同,NBA版“东施效颦”!你再这么打,可能要被交易

老梁体育漫谈
2026-01-24 23:14:18
内鬼开始下手了?当年颠覆苏联手法在中国重现,蹊跷事情接连发生

内鬼开始下手了?当年颠覆苏联手法在中国重现,蹊跷事情接连发生

文史达观
2024-08-21 17:38:14
李湘何超琼扯上关系,母女参加其宴会出尽洋相,出事后王岳伦消失

李湘何超琼扯上关系,母女参加其宴会出尽洋相,出事后王岳伦消失

花哥扒娱乐
2026-01-23 18:31:57
迪丽热巴剪掉万年长发!新剧顶超帅男生头亮相,粉丝爱惨:我老公

迪丽热巴剪掉万年长发!新剧顶超帅男生头亮相,粉丝爱惨:我老公

菲儿爱蛋糕
2026-01-23 10:47:51
张子宇签约山东高速女篮是巨大失误,侯冰并不是知人善任的好教练

张子宇签约山东高速女篮是巨大失误,侯冰并不是知人善任的好教练

姜大叔侃球
2026-01-24 12:57:43
iPhone Air大降2500元,苹果一个月内多次促销

iPhone Air大降2500元,苹果一个月内多次促销

财联社
2026-01-24 21:18:05
钱再多也没用!43岁身体出问题的雷佳音,给所有男星提了个醒

钱再多也没用!43岁身体出问题的雷佳音,给所有男星提了个醒

林雁飞
2026-01-24 23:28:09
今晚打响!西甲焦点大戏:皇马战黄潜 银河战舰赢球就登顶

今晚打响!西甲焦点大戏:皇马战黄潜 银河战舰赢球就登顶

爱奇艺体育
2026-01-24 09:18:38
歌手李行亮自曝因网友抵制接不到工作,“说我道德观扭曲,真的好冤”,与妻子麦琳已无商业关联

歌手李行亮自曝因网友抵制接不到工作,“说我道德观扭曲,真的好冤”,与妻子麦琳已无商业关联

都市快报橙柿互动
2026-01-23 20:57:12
消费者投诉称限量发售的6.68万元“一口价”飞度要加价3000元购买,广汽本田回应:已启动专项调查

消费者投诉称限量发售的6.68万元“一口价”飞度要加价3000元购买,广汽本田回应:已启动专项调查

鲁中晨报
2026-01-22 17:23:31
2025年,内娱最赚钱的10位明星,刘德华第四,第一名让人意外

2025年,内娱最赚钱的10位明星,刘德华第四,第一名让人意外

林雁飞
2026-01-06 13:15:06
神农美特好全城首批16家门店!明日开业,惠享全城!

神农美特好全城首批16家门店!明日开业,惠享全城!

锦绣太原
2026-01-24 19:26:02
现场目击:成都城南高速四辆执法车并排行驶致大面积车辆滞留缓行

现场目击:成都城南高速四辆执法车并排行驶致大面积车辆滞留缓行

大众新闻报社记者
2026-01-24 12:35:02
发年终奖时,同事7万7,妻子却只有77,2个月后公司没再接到新项目

发年终奖时,同事7万7,妻子却只有77,2个月后公司没再接到新项目

小秋情感说
2026-01-01 13:00:06
后背发凉!一月入3万36岁女高管,失业8个月加离婚,如今送外卖了

后背发凉!一月入3万36岁女高管,失业8个月加离婚,如今送外卖了

火山詩话
2026-01-02 19:14:41
重兵压境 航母静默 美国真要对伊朗动手了?

重兵压境 航母静默 美国真要对伊朗动手了?

上游新闻
2026-01-23 20:24:12
一粒速效救心丸可治10多种病,别只用来治疗心梗了,一定要收藏

一粒速效救心丸可治10多种病,别只用来治疗心梗了,一定要收藏

路医生健康科普
2026-01-24 08:30:03
死里逃生,国乒19岁小将赢3局又输3局惊险夺男单首冠,教练碎碎念

死里逃生,国乒19岁小将赢3局又输3局惊险夺男单首冠,教练碎碎念

真理是我亲戚
2026-01-24 22:31:24
2026-01-25 00:23:00
青少年叛逆教育
青少年叛逆教育
专注IT技能资讯分享
9501文章数 632关注度
往期回顾 全部

科技要闻

黄仁勋现身上海菜市场

头条要闻

张又侠、刘振立被查 解放军报发布社论

头条要闻

张又侠、刘振立被查 解放军报发布社论

体育要闻

当家球星打替补,他们在故意摆烂?

娱乐要闻

回归还是顶流 凤凰传奇将现身马年春晚

财经要闻

“百年老字号”张小泉遭60亿债务压顶

汽车要闻

有增程和纯电版可选 日产NX8或于3-4月间上市

态度原创

艺术
健康
时尚
亲子
房产

艺术要闻

在格陵兰岛坐牢,是一种怎样的体验?

耳石脱落为何让人天旋地转+恶心?

冬天最佳“显瘦”公式:上短+下长

亲子要闻

人类的生育能力到底有多强?网友:凑满十二生肖不是难事!

房产要闻

正式官宣!三亚又一所名校要来了!

无障碍浏览 进入关怀版