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
- centos安装mysql8.0教程(Centos7 安装 Mysql8教程)
- 宝塔数据库不小心删了(宝塔面板MySQL数据库经常自动停止的解决方法)
- navicat怎么和mysql连接(Navicat Premium远程连接MySQL数据库的方法)
- python中怎么连接mysql(python远程连接MySQL数据库)
- mysql8修改默认端口(MySQL 8.0新特性 — 管理端口的使用简介)
- mysql高可用集群(MySQL之高可用集群部署及故障切换实现)
- mysql的主从复制怎么做(MySQL主从复制原理以及需要注意的地方)
- 织梦源码安装数据库怎么填(Mysql修改端口号 织梦DedeCMS设置教程)
- mysql重启启动失败(MySQL8.0无法启动3534的解决方法)
- mysql不兼容问题(解决mysql 组合AND和OR带来的问题)
- mysql索引原理及调优(MySQL索引机制程序员必知)
- mysql索引提高效率(MySql如何查看索引并实现优化)
- Mysql官方性能测试工具mysqlslap的使用简介(Mysql官方性能测试工具mysqlslap的使用简介)
- mysql binlog如何查看(MySQL binlog_ignore_db 参数的具体使用)
- hive分析后如何录入mysql(hive从mysql导入数据量变多的解决方案)
- mysqlmha架构图(MySQL之MHA高可用配置及故障切换实现详细部署步骤)
- 虐待儿童是发泄支配欲的愚蠢行为(虐待儿童是发泄支配欲的愚蠢行为)
- 你或许不知道你隐藏的支配欲望(你或许不知道你隐藏的支配欲望)
- 把宽体丰田86卖了,换成7.5代高尔夫GTI玩起姿态与性能并存的改装(把宽体丰田86卖了)
- 大众推出了第五代高尔夫GT(大众推出了第五代高尔夫GT)
- 换代在即,现在是抄底 7.5代 高尔夫的最佳时机吗(换代在即现在是抄底)
- 2020年大众7.5代高尔夫R终结特别版 最后的呐喊(2020年大众7.5代高尔夫R终结特别版)
热门推荐
- css图片颜色提取(解析CSS 提取图片主题色功能小技巧)
- docker部署golang(如何使用Docker部署Go Web应用的实现)
- nginx+ssl配置详解(nginx配置ssl实现https的方法示例)
- nginx学习需要哪些知识(一篇文章搞懂Nginx是什么,能干什么)
- sqlserver多表查询(sqlserver 树形结构查询单表实例代码)
- python excel 合并表格(Python实现合并excel表格的方法分析)
- 磐石云香港VPS服务器怎么样?磐石云香港VPS CN2线路测评(磐石云香港VPS服务器怎么样?磐石云香港VPS CN2线路测评)
- mongovue的使用
- idea 启动docker容器不重新打包(Docker遇到Intellij IDEA,Java开发提升了十倍生产力)
- php怎么根据字符串长度设置(php常用字符串长度函数strlen与mb_strlen用法实例分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9