Replace into与Insert update
来源:互联网 发布:出版人周筠 知乎 编辑:程序博客网 时间:2024/04/28 01:44
Replace into
replace into 跟 insert 功能类似,
不同点在于:replace into 首先尝试插入数据到表中,1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。
2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
replace into 有三种形式:
replace into tbl_name(col_name, ...) values(...)
replace into tbl_name(col_name, ...) select ...
replace into tbl_name set col_name=value, ...
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。
Insert update
如果您指定了ON DUPLICATE KEY UPDATE,并且insert行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
mysql> UPDATE table SET c=c+1 WHERE a=1;
总之
如果表中存在主键记录,replace相当于执行delete 和 insert两条操作,而insert*update的相当于执行if exist do update else do insert操作。
因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的值(这样如果是以自增id为标志的话可能导致记录丢失);而insert*update只是更新部分字段,对于未被更新的字段不会变化(不会强制修改为默认值)。
- Replace into与Insert update
- Replace into与Insert update
- mysql replace into 与 insert update
- INSERT INTO ON DUPLICATE KEY UPDATE 与 REPLACE INTO 和 INSERT IGNORE INTO
- Replace INTO与INSERT INTO
- REPLACE INTO 与 INSERT ... ON DUPLICATE KEY UPDATE
- Mysql replace into 与 insert into on duplicate key update 的区别
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处
- Mysql replace into 与 insert into on duplicate key update 死锁和性能测试
- MySQL的Replace into 与Insert into ..... on duplicate key update
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处
- MySQL的Replace into 与Insert into ..... on duplicate key update ...真正的不同之处
- Insert into ..... on duplicate key update ...与Replace into的区别
- MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
- MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
- [3D基础]理解计算机3D图形学中的坐标系变换
- JavaScript:正则表达式(6)
- DEDE5.7实现.htaccess方式栏目带目录名的个性化伪静态详解
- Samsung I8150(港版 2.3.6)root方法
- Spring 注解学习手札(二) 控制层梳理
- Replace into与Insert update
- Repeated column in mapping for entity:should be mapped with insert="false" update="false"
- Delphi 数据类型
- Spring 注解学习手札(三) 表单页面处理
- 把iis服务关掉,将Session值存到数据库中继续运行
- linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
- C#装饰者模式实例代码
- Spring 注解学习手札(四) 持久层浅析
- 复制构造函数前面不要加explicit