沃梦达 / 编程技术 / 数据库 / 正文

Mysql避免重复插入数据的4种方式

下面是Mysql避免重复插入数据的4种方式的完整攻略,包含示例说明。

下面是Mysql避免重复插入数据的4种方式的完整攻略,包含示例说明。

1.使用UNIQUE约束

可以在建表的时候,指定某个字段为UNIQUE,这样当插入数据的时候,如果该字段的值已经存在,则会插入失败,进而避免重复插入。

示例:

假设我们要创建一张用户表,其中email字段需要保证唯一,可以这样定义:

CREATE TABLE user (
  id INT(11) unsigned NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL DEFAULT '',
  email VARCHAR(50) NOT NULL DEFAULT '',
  PRIMARY KEY (id),
  UNIQUE KEY (email)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

在上面的语句中,我们通过UNIQUE KEY(email)定义了email字段唯一,如果我们插入一条重复的email数据,如下:

INSERT INTO user (name, email) VALUES ('Tom', 'tom@example.com'), ('Jerry', 'tom@example.com');

则第一条数据插入成功,而第二条数据则会提示重复插入错误。

2.ON DUPLICATE KEY UPDATE

在插入数据的时候,可以使用INSERT INTO... ON DUPLICATE KEY UPDATE...的语法来避免重复插入。它的原理是当遇到重复插入的情况时,执行UPDATE语句来更新该条数据。

示例:

假设有一张班级表,其中包含班级id和班级名两个字段。我们希望可以修改班级名,也可以添加新的班级。

INSERT INTO class (id, name) VALUES (1, '一班') ON DUPLICATE KEY UPDATE name = VALUES(name);

当id为1的一班已经存在时,则会更新一班的名称。当我们想要添加二班时,可以这样:

INSERT INTO class (id, name) VALUES (2, '二班') ON DUPLICATE KEY UPDATE name = VALUES(name);

这样会向class表插入一条新数据,id为2,name为'二班'。

3.REPLACE INTO

REPLACE INTO是一条特殊的语句,它的作用是当遇到重复的数据时,执行UPDATE语句来更新数据,如果数据不存在则插入新数据。

示例:

假设有一张学生表,其中包含学号和姓名两个字段。我们希望可以修改学生的姓名,也可以添加新的学生。

REPLACE INTO student (id, name) VALUES ('S001', 'Tom');

当学号为'S001'的学生已经存在时,则会更新该学生的姓名,如果该学生不存在,则会插入一条新数据,学号为'S001',姓名为'Tom'。

4.IGNORE关键字

IGNORE关键字可以忽略插入过程中的错误,但它仅在遇到插入重复数据的情况下才有效。

示例:

假设有一张成绩表,其中包含学号和成绩两个字段。我们希望可以添加新的学生成绩,如果某个学号已经有了成绩,则忽略新数据。

INSERT IGNORE INTO score (id, grade) VALUES ('S001', 80);

当学号为'S001'的学生已经存在成绩时,则新数据会被忽略。如果该学生不存在成绩,则会插入一条新数据,学号为'S001',成绩为80。

以上就是“Mysql避免重复插入数据的4种方式”的完整攻略了,希望对你有所帮助。

本文标题为:Mysql避免重复插入数据的4种方式

基础教程推荐