MySQL:不存在即插入(mysql没有就插入)

MySQL:不存在即插入可以在一次SQL语句中实现,节省开发时间。

MySQL的不存在即插入(INSERT IGNORE 语句)是为了防止插入重复记录而引入的,其作用是当带有 DUPLICATE KEY 的行被放弃时,在没有任何错误发生时,继续处理后续语句,而不是发生错误,中断执行。而且在常规情况下也是很有用的,如果我们在插入之前需要做某些复杂的判断,这时候可以使用 INSERT IGNORE。

要实现 MySQL 的不存在即插入,首先要在相应表中有一个或多个唯一键,这样才能实现,例如:

创建一个 student 表:

`CREATE TABLE student(

id INT UNSIGNED AUTO_INCREMENT primary key,

name VARCHAR(20) NOT NULL UNIQUE

)`

此时如果使用下面的 SQL 语句插入一个重复的姓名:

`INSERT INTO student SET name=”jack”`

此时会提示重复,插入失败:

`Error Code : 1062. Duplicate entry ‘jack’ for key ‘name’`

若使用 INSERT IGNORE,则会忽略重复数据:

`INSERT IGNORE INTO student SET name=”jack”`

MySQL 会将这条语句视为没有插入,弹出的提示信息也会变成:

`Query OK, 1 row affected`

既然 INSERT IGNORE 有这样的特点,我们也可以在实际开发中使用这个功能,栗子:

`INSERT IGNORE INTO student (name) VALUES(“jack”),(“alice”),(“peter”)`

上面的语句中,有可能存在的重复的姓名,MySQL 会认为存在的不插入,缺失的插入,最后的提示是:

`Query OK, 2 row affected`

总结:MySQL 的不存在即插入(INSERT IGNORE 语句)是非常有用的,它可以在一条SQL语句中节省大量开发时间,而不用在代码中做判断,只需要按照正确格式写 SQL 语句即可实现。


数据运维技术 » MySQL:不存在即插入(mysql没有就插入)