1. 防止表中出现重复数据

在表中设置指定的字段为 primary key 或者 unique 索引来保证数据的唯一性

  1. // 先写一个新表, 无主键约束
  2. mysql> create table person_tbl
  3. -> (first_name char(20), last_name char(20), sex char(10));

image.png

2. 加入想要设置 first_name 和 last_name 不能重复,设置双主键

  1. alter table person_tbl add primary key(first_name, last_name);

image.png
如果我们设置了唯一索引,那么在插入重复数据时,SQL 语句将无法执行成功,并抛出错。
INSERT IGNORE INTO 与 INSERT INTO 的区别就是 INSERT IGNORE INTO 会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
image.png

3.统计重复数据:

  1. // 假如允许重复数据存在
  2. // 查看name 相同的数据有多少
  3. mysql > select count(*) as repetitions , name
  4. -> from test
  5. -> group by name
  6. -> having repetitions > 1;

下面显示 name = ‘j1’ || name = ‘j2’ 的重复次数
image.png

4. 过滤重复数据

  • 可以使用 distinct 过滤重复数据
    1. select distinct name from test;
    将不重复的数据 select 出来
    image.png