0
点赞
收藏
分享

微信扫一扫

mysql中insert, replace, insert ignore用法区别

自由的美人鱼 2022-01-27 阅读 183

insert, replace, insert ignore用法区别

mysql中经常用到的三种插入数据的语句如下:

  • insert into 表示插入数据,数据库会检查主键或者唯一索引,若出现重复则会报错,错误信息如下:
    Duplicate entry 'xxx(出现重复的数据)’ for key ‘xxx(主键或唯一索引)
为了演示,我们将创建一个名为学生(students)的新表。

CREATE TABLE IF NOT EXISTS students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    email VARCHAR(50) NOT NULL UNIQUE
);

UNIQUE约束确保电子邮件列中不存在重复的电子邮件。
以下语句在students表中插入一个新行:

INSERT INTO students(email)
VALUES('zhangsan@163.com');

上面语句它按预期那样工作。接下来,我们来执行另一个语句,将两行插入到我们的学生表中:
INSERT INTO subscribers(email)
VALUES('shangsan@163.com'), 
      ('lisi@163.com');
      
它将返回一个错误:
1062 - Duplicate entry 'zhangsan@163.com' for key 'email'

如错误消息中所示,电子邮件zhangsan@163.com值重复而导致违反UNIQUE约束。
但是,如果您使用INSERT IGNORE语句,则其它语句将会继续执行

MySQL服务器返回一条消息,显示插入一行,另一行被忽略。
Query OK, 1 row affected
Records: 2  Duplicates: 1  Warnings: 
  • replace into表示插入替换数据,若表中有主键或者唯一索引,且数据库已经存在重复数据,则使用新数据来替换老数据
  • insert ignore表示若表中已经存在相同的记录,则忽略当前新数据
举报

相关推荐

0 条评论