摘要:
下文讲述MySQL数据库中,避免数据重复插入的关键字(ignore,Replace,ON DUPLICATE KEY UPDATE)分享,如下所示:
ignore关键字
ignore关键字用于插入数据时,如果存在主键重复或唯一索引约束,则会自动忽略此脚本的运行,并返回影响的行数
INSERT IGNORE INTO `table_name` (`field1`, `field2`, `field3`) VALUES ('a', 'b', 'c');
---当出现主键或唯一索引的重复时,就自动忽略此脚本,并返回影响行数字0
INSERT IGNORE INTO `table_name` (`field`) SELECT `field` FROM `table_name2`;
---采用表复制,如果存在主键重复或唯一索引重复时,则自动忽略插入记录
使用replace关键字插入数据
Replace into 语法
REPLACE INTO `table_name`(`field_name`, ...) VALUES (...);
REPLACE INTO `table_name` (`field_name`, ...) SELECT ...;
REPLACE INTO `table_name` SET `field_name`='value',
replace into功能:
替代插入,此关键字的功能同insert ignore into关键字非常的想象,
当如果(主键或唯一索引值重复时),先删除原行数据,再将新数据插入到数据表中
replace into返回值:
replace into返回此次操作所影响的行数,此值为
删除行和被插入行数之和
例:keyId为主键 table_name数据表为空表
REPLACE INTO `table_name` (`keyId`, `info`) VALUES (1, 'maomao365.com');
---影响行数为1
---当第二次运行以上脚本时,则影响的行数为2
REPLACE INTO `table_name` (`keyId`, `info`) VALUES (1, 'maomao365.com');
ON DUPLICATE KEY UPDATE关键字说明
ON DUPLICATE KEY UPDATE关键字 常结合insert into 关键字一起使用,所起到的功能为:(“有则更新,无则插入”)
当主键或唯一索引值重复时,执行update操作
---例:keyId 为主键
INSERT INTO `table_name` (`keyId`, `info`) VALUES (1,88) ON DUPLICATE KEY UPDATE `info`=`info`+1;
---当 table_name表中存在keyId=1的记录时,以上脚本等效于以下
UPDATE `table_name` SET `info`=`info`+1 WHERE `keyId`=1;
---当 table_name表中不存在keyId=1的记录时,以上脚本等效于以下
INSERT INTO `table_name` (`keyId`, `info`) VALUES (1,88)