mysqlreplace用法(细说mysql replace into用法)
mysqlreplace用法
细说mysql replace into用法replace语句在一般的情况下和insert差不多,但是如果表中存在primary 或者unique索引的时候,如果插入的数据和原来的primary key或者unique相同的时候,会删除原来的数据,然后增加一条新的数据,所以有的时候执行一条replace语句相当于执行了一条delete和insert语句。直接上实例吧:
新建一个test表,三个字段,id,title,uid, id是自增的主键,uid是唯一索引;
|
create table `test` ( `id` int (11) not null auto_increment, `title` varchar (25) default null comment '标题' , `uid` int (11) default null comment 'uid' , primary key (`id`), unique key `uid` (`uid`) ) engine=innodb default charset=utf8mb4; |
insert into test(title,uid) values ('你好','1');
insert into test(title,uid) values ('国庆节','2');
结果如下:
使用 replace into插入数据时:
|
replace into test(title,uid) values ( '这次是8天假哦' , '3' ); |
当uid存在时,使用replace into 语句
|
replace into test(title,uid) values ( '这是uid=1的第一条数据哦' , '1' ); |
没有预料到 mysql 在数据冲突时(也就是uid发生重复数据时)实际上是删掉了旧记录,再写入新记录,。通过以上实例,相信博友们可以看出:
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,
1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
mysql replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...)
2. replace into tbl_name(col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...
第一种形式类似于insert into的用法,
第二种replace select的用法也类似于insert select,这种用法并不一定要求列名匹配,事实上,mysql甚至不关心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2;?这个例子使用replace into从?tb2中将所有数据导入tb1中。
第三种replace set用法类似于update set用法,使用一个例如“set col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为default(col_name)处理。因此,该赋值相当于set col_name = default(col_name) + 1。
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,mysql 将自动为这些列赋上默认值。
原文链接:https://www.cnblogs.com/phpper/p/7586616.html
- mysql 慢查询日志
- python下的sql处理(python中aioysql异步操作MySQL的方法)
- 修改mysql安装服务名称(Apache为mysql以及自己的项目设置虚拟路径)
- 查询按照部门分组的mysql语句(Mysql根据某层部门ID查询所有下级多层子部门的示例)
- mysql索引分几种(MySQL 覆盖索引的优点)
- druid数据库连接池原理详解(阿里巴巴Druid,轻松实现MySQL数据库加密!)
- MySQL中对varchar类型的排序
- mysql意外查不到数据(MySQL 丢失数据的原因及解决)
- mysql复合索引会包含哪些索引(MySQL查询冗余索引和未使用过的索引操作)
- mysql的innodb引擎数据结构(MySQL InnoDB架构的相关总结)
- mysql要先下服务端再下客户端吗(解读MySQL的客户端和服务端协议)
- mysql将字符串转换为日期的函数(Mysql中时间戳转为Date的方法示例)
- mysql深度分页问题(MySQL DDL 引发的同步延迟该如何解决)
- mysql8.0.15安装详细教程(Mysql8.0.22解压版安装教程小白专用)
- mysql8.0.26安装教程(mysql 8.0.22压缩包完整安装与配置教程图解亲测安装有效)
- phpstudymysql启动又自动停止(Win下解决phpStudy MySQL启动失败)
- 自制橡皮泥(自制橡皮泥)
- 还在卖 禁药西布曲明网上论斤卖(还在卖禁药西布曲明网上论斤卖)
- 微商在朋友圈热卖的 DL减肥咖啡 含违禁药物,你还敢买吗(微商在朋友圈热卖的)
- 八一节,说说中国女兵(八一节说说中国女兵)
- 王治郅菜鸟赛季已让八一带入正轨,大郅七大经典语录或是成功秘诀(王治郅菜鸟赛季已让八一带入正轨)
- 庆八一,重读经典红色语录,感悟互联网发展硬道理(重读经典红色语录)
热门推荐
- css制作磨砂图片(CSS制作梦幻彩虹效果)
- yii2对比springboot(Yii框架函数简单用法分析)
- python字符处理的函数(Python字符串内置函数功能与用法总结)
- php微信支付流程(PHP实现微信退款的方法示例)
- python解析视频源码(基于python实现高速视频传输程序)
- javascript函数工具有哪些(如何让你的JavaScript函数更加优雅详解)
- 阿里云服务器慢怎么回事(阿里云服务器进入黑洞应该怎么办?)
- python 暗弱目标提取(Python提取频域特征知识点浅析)
- thinkphp快速入门手册(从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解)
- 一分钟看懂响应式编程(浅谈Rx响应式编程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9