菜鸟教程
- 在mysql数据库中,我们允许数据出现重复的情况。有些时候不需要重复的数据。(所以我们有必要知道数据重复的处理方法)
防止表中出现重复的数据
- 表中的数据重复,是指同一张表中出现相同的一行数据。(如果我们限制某个字段不能出现重复,那么表中就不会出现重复的同一行记录)
- 所有表中创建了primary key或unique的字段都不会出现重复的情况。(这里的索引也只能保证不会出现相同的一行记录)
CREATE TABLE IF NOT EXISTS test(
first_name varchar(20) not null,
last_name varchar(20) not null,
primary key(last_name, first_name)
)engine innoDB default charset utf8;
- 在使用索引(unique、primary key)时,该字段不要为null。
-
IF NOT EXISTS:如果test表不存在就创建。
-
primary key和unique:都能谁知多个字段。
插入数据时,防止数据重复
-
INSERT INTO和INSERT IGNORE INTO区别:INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。
insert into test(`name`,`age`) values('nihao',29);
-> Query OK, 1 row affected (0.00 sec)
insert ignore into test(`name`,`age`) values('nihao',29);
-> Query OK, 0 row affected (0.00 sec)
- INSERT IGNORE INTO当插入数据时,在设置了记录的唯一性后,如果插入重复数据,将不返回错误,只以警告形式返回。
- REPLACE INTO 如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。
查询过滤掉重复数据
- 在select中可以使用 distinct 过滤掉重复数据。在查询中默认是 all 插叙得到全部数据。
SELECT DISTINCT * FROM test GROUP BY last_name;
网友评论