MySQL INSERT IGNORE语句

MySQL INSERT IGNORE语句

摘要:在本教程中,您将学习如何使用MySQL INSERT IGNORE语句将数据插入表中。

MySQL INSERT IGNORE语句介绍

当您使用该INSERT语句向一个表中添加多行时,如果在处理过程中发生错误,则MySQL终止该语句并返回错误。结果,没有行插入到表中。

但是,如果使用该INSERT IGNORE语句,则会忽略包含导致错误的无效数据的行,并将具有有效数据的行插入表中。

INSERT IGNORE语句的语法如下:

1

2

3

4

INSERT IGNORE INTO table(column_list)

VALUES( value_list),

      ( value_list),

      ...

注意,该IGNORE子句是MySQL对SQL标准的扩展。

MySQL INSERT IGNORE示例

我们将创建一个新的表名为subscribers为示范。

1

2

3

4

CREATE TABLE subscribers (

    id INT PRIMARY KEY AUTO_INCREMENT,

    email VARCHAR(50) NOT NULL UNIQUE

);

UNIQUE约束确保该email列中不存在重复的电子邮件。

以下语句在subscribers表中插入新行   :

1

2

INSERT INTO subscribers(email)

VALUES('john.doe@gmail.com');

它按预期工作。

让我们执行另一个在表中插入两行的语句   subscribers

1

2

3

INSERT INTO subscribers(email)

VALUES('john.doe@gmail.com'),

      ('jane.smith@ibm.com');

它返回一个错误。

1

Error Code: 1062. Duplicate entry 'john.doe@gmail.com' for key 'email'

如错误消息中所示,电子邮件john.doe@gmail.com 违反了UNIQUE约束。

但是,如果使用INSERT IGNORE语句代替。

1

2

3

INSERT IGNORE INTO subscribers(email)

VALUES('john.doe@gmail.com'),

      ('jane.smith@ibm.com');

MySQL返回一条消息,指示已插入一行,而另一行被忽略。

1

1 row(s) affected, 1 warning(s): 1062 Duplicate entry 'john.doe@gmail.com' for key 'email' Records: 2  Duplicates: 1  Warnings: 1

要查找警告的详细信息,可以使用SHOW WARNINGS如下所示的命令:

1

SHOW WARNINGS;

MySQL INSERT IGNORE-警告

总之,当您使用该INSERT IGNORE语句时,MySQL会发出警告,以防发生错误,而不是发出错误。

如果从subscribers表中查询数据,则会发现实际上只插入了一行,而导致错误的行却没有插入。

MySQL INSERT IGNORE-订户表

MySQL INSERT IGNORESTRICT 模式

严格模式是,MySQL的返回一个错误并中止INSERT声明,如果你尝试插入无效值插入表中。

但是,如果使用该INSERT IGNORE语句,MySQL将发出警告而不是错误。另外,在将值添加到表之前,它将尝试调整值以使其有效。

考虑以下示例。

首先,我们创建一个名为的新表tokens

1

2

3

CREATE TABLE tokens (

    s VARCHAR(6)

);

在此表中,该列s仅接受长度小于或等于6的字符串。

第二,在tokens表中插入一个长度为7的字符串。

1

INSERT INTO tokens VALUES('abcdefg');

由于启用了严格模式,MySQL发出了以下错误。

1

Error Code: 1406. Data too long for column 's' at row 1

第三,使用该INSERT IGNORE语句插入相同的字符串。

1

INSERT IGNORE INTO tokens VALUES('abcdefg');

MySQL在将数据插入tokens表之前将其截断。此外,它还会发出警告。

MySQL INSERT IGNORE-严格模式

在本教程中,您学习了如何使用MySQL INSERT IGNORE语句将行插入表中,并忽略导致错误的行的错误。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值