MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成。
例如ipstats表结构如下:
CREATE TABLE ipstats (
ip VARCHAR(15) NOT NULL UNIQUE,
clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'
);
原本需要执行3条SQL语句,如下:
IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') {
UPDATE ipstats SET clicks=clicks+1 WHERE ip='192.168.0.1';
} else {
INSERT INTO ipstats (ip, clicks) VALUES ('192.168.0.1', 1);
}
而现在只需下面1条SQL语句即可完成:
INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;
注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。
总结如下:
如果表中不存在主键记录,replace和insert*update都与insert是一样的特点。
如果表中存在主键记录,replace相当于执行delete 和 insert两条操作,而insert*update的相当于执行if exist do update else do insert操作。因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的值(这样如果是以自增id为标志的话可能导致记录丢失);而insert*update只是更新部分字段,对于未被更新的字段不会变化(不会强制修改为默认值)。
多条记录操作:
insert into t(a,b,c) values ('a1','b1','c1'),('a2','b2','c2')
on duplicate key update t.c=values(t.c)
分享到:
相关推荐
在MySQL数据库中,如果你需要执行一个操作,即当数据存在时进行更新,如果不存在则进行插入,你可以使用`INSERT INTO...ON DUPLICATE KEY UPDATE`语句。这个功能强大的语句结合了`INSERT`和`UPDATE`操作,允许你在...
判断是否存在,存在就update,不存在insert,不是用存储过程解决的。
非常经典的SQL经验,适合于数据库初学者及长期从事软件开发者
首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2...
MySQL数据库的插入(INSERT)和更新(UPDATE)语句是数据操作的重要组成部分,它们用于向数据库表中添加新数据和修改已有数据。SQL语言通常包括查询(SELECT)、更新(INSERT/UPDATE)、删除(DELETE)等基本操作。...
在数据库管理中,INSERT和UPDATE语句是两个非常基础且重要的操作。它们分别用于向数据库中插入新的数据和更新已存在的数据。这篇内容将详细解释这两个SQL语句的工作原理、用法以及如何导出这些语句,以供日后使用或...
在Mybatis中,`insertOrUpdate`操作是一种将数据插入数据库,如果存在相同的唯一标识则更新已有数据的方法。这种操作在数据库编程中非常实用,因为它允许开发者以简洁的方式处理增删改查(CRUD)操作。在MySQL中,...
当你在`INSERT`语句后添加`ON DUPLICATE KEY UPDATE`,如果新插入的行违反了唯一性约束,MySQL将执行指定的`UPDATE`操作。这里的“唯一性”指的是任何具有唯一索引或主键的列。例如,如果你有一个名为`consume_locus...
MySQL触发器是一种数据库对象,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。在这个场景中,开发者尝试创建一个UPDATE触发器,当`triggletest_triggle`表中的数据被更新时...
MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解.doc
对于“update mysql”,我们可能需要使用`UPDATE`语句来修改现有记录,例如更新图片的相关元数据。 3. **处理结果集**:如果SQL操作返回结果集,如`SELECT`查询,我们可以使用`mysql_store_result()`或`mysql_use_...
MySQL数据库的INSERT、UPDATE、DELETE和REPLACE语句是数据操作语言(DML)的关键组成部分,用于在数据库中创建、修改和删除数据。以下是对这些语句的详细说明: 1. INSERT语句: - INSERT语句用于向数据库表中添加...
MySQL 数据库中的 `INSERT`、`UPDATE`、`DELETE` 和 `REPLACE` 语句是数据操作语言(DML)的关键组成部分,用于在数据库中创建、修改和删除数据。以下是对这些语句的详细解释: 1. **INSERT 语句**: - 基本用法:...
mysql-update-insert(-ajax)-transform 用于将 MySQL 插入语句转换为更新语句,反之亦然的工具。 在 MySQL Workbench 中,可能与许多其他工具一样,您可以输出插入和更新语句。 这很有帮助,但您必须再次编辑准备...
在这个场景中,我们关注的是一个名为"Upload-Insert-Update-Delete-Image-PHP-MySQL.rar_msql"的压缩包文件,它显然涉及到使用PHP和MySQL进行基本的CRUD操作,即创建(Create)、读取(Retrieve)、更新(Update)和删除...
在 MySQL 中批量更新记录时,使用 Replace Into 或 Insert Into ... On Duplicate Key Update 语句可以大大提高更新效率,而使用临时表的方法也可以提高效率,但是需要用户有 temporary 表的 create 权限。
在MySQL数据库中,INSERT语句是用于向表中插入新数据的基本操作。本文将分享三个关于MySQL INSERT操作的小技巧,帮助你更高效地处理数据。 ### 技巧1:从其他表中插入数据 当你需要将一个表中的部分数据复制到另一...
INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,…)] VALUES ({expr | DEFAULT},…),(…),… [ ON DUPLICATE KEY UPDATE col_name=expr, … ] 或: INSERT [LOW_...
MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令。它允许您根据需要向表中添加一行或多行数据。以下是对标题和描述中所述知识点的详细说明: 1. **基本INSERT语法**: INSERT语句的基本形式是`INSERT ...