MySQL: 没有则插入,有就更新(mysql没有就插入)
MySQL是一种经典的关系型数据库,在很多业务场景中提供了很多非常强大而实用的特性。其中一个有趣的特性便是没有则插入,有就更新——即在一个唯一的SQL查询中既支持插入记录,又支持更新现有记录。
如果想实现上述特性,有两种方法,一种为INSERT … ON DUPLICATE KEY UPDATE语句,另一种为 REPLACE INTO 语句。前者适用于MySQL中存在唯一索引或者主键的表;后者则相对比较自由,可以在任何MySQL表中实现。
INSERT … ON DUPLICATE KEY UPDATE 用法:
“`mysql
INSERT INTO tablename (column1, column2, column3, …)
VALUES (value1, value2, value3, …)
ON DUPLICATE KEY UPDATE column1=value1, column2=value2, column3=value3, …;
REPLACE INTO 的用法:```mysql
REPLACE INTO tablename (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
要说明的是,使用INSERT … ON DUPLICATE KEY UPDATE 语句和REPLACE INTO语句,都会首先尝试插入一条数据。如果插入失败(因为存在唯一索引约束冲突),那么MySQL数据库将进行更新操作。
因此,使用上述两种MySQL语句,在一个唯一的SQL查询中能够支持没有则插入,有则更新,使用起来非常灵活方便,在实际业务应用中非常好用。