MySQL插入更新_ON DUPLICATE KEY UPDATE
前提:操作的表具有主键或唯一索引
INSERT INTO:表中不存在对应的记录,则插入;若存在对应的记录,则报错;
INSERT INTO IGNORE:表中不存在对应的记录,则插入;若存在对应的记录,则忽略,不进行任何操作
REPLACE INTO:表中不存在对应的记录,则插入;若存在对应的记录,则删除原有的记录,再 插入新的记录。
ON DUPLICATE KEY UPDATE(on duplicate key update)的功能类似于REPLACE INTO:
若表中不存在数据(没有待插入记录的主键值或唯一索引值),则直接插入新的记录;
若表中已存在数据(主键或唯一索引值相同),则执行更新操作。
所以,ON DUPLICATE KEY UPDATE与REPLACE INTO在操作过程上不同的是:
当已存在数据时,ON DUPLICATE KEY UPDATE执行更新操作,而不是先删除原有记录,再插入新记录。
语句:INSERT INTO table_name (field1,field2...) values (value1,value2...) on duplicate key update filed3=value3;
说明:update后面接的语句可以是其它表达式。
假设有一个以下table:
mysql> select * from staff_3;
+----+----------+-------+
| ID | name | slary |
+----+----------+-------+
| | liding | |
| | haofugui | |
| | xiaoli | |
| | xiaohua | |
+----+----------+-------+
rows in set (0.00 sec) mysql> describe staff_3;
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| ID | int() | NO | PRI | NULL | auto_increment |
| name | char() | YES | UNI | NULL | |
| slary | int() | YES | | NULL | |
+-------+----------+------+-----+---------+----------------+
rows in set (0.00 sec)
进行on duplicate key on命令:(从ID可以看出,该命令执行更新操作别浪费自增属性值)
mysql> insert into staff_3 (name,slary) values ('xiaoli',) on duplicate key update slary=;
Query OK,  rows affected (0.00 sec)
mysql> select * from staff_3;
+----+----------+-------+
| ID | name     | slary |
+----+----------+-------+
|   | liding   |   |
|   | haofugui |   |
|   | xiaoli   |   |
|   | xiaohua  |   |
+----+----------+-------+
 rows in set (0.00 sec)
mysql> insert into staff_3 (name,slary) values ('xiaoming',) on duplicate key update slary=;
Query OK,  row affected (0.00 sec)
mysql> select * from staff_3;
+----+----------+-------+
| ID | name     | slary |
+----+----------+-------+
|   | liding   |   |
|   | haofugui |   |
|   | xiaoli   |   |
|   | xiaohua  |   |
|   | xiaoming |   |
+----+----------+-------+
 rows in set (0.00 sec)
MySQL插入更新_ON DUPLICATE KEY UPDATE的更多相关文章
- MySQL_插入更新 ON DUPLICATE KEY UPDATE
		平时我们在设计数据库表的时候总会设计 unique 或者 给表加上 primary key 的限制条件. 此时 插入数据的时候 ,经常会有这样的情况: 我们想向数据库插入一条记录: 若数据表中存在以 ... 
- Mysql中INSERT ... ON DUPLICATE KEY UPDATE的实践
		转: Mysql中INSERT ... ON DUPLICATE KEY UPDATE的实践 阿里加多 0.1 2018.03.23 17:19* 字数 492 阅读 2613评论 2喜欢 1 一.前 ... 
- [转]主键冲突的话就更新否则插入 (ON DUPLICATE KEY UPDATE )
		mysql "ON DUPLICATE KEY UPDATE" 语法如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQ ... 
- mysql 添加数据如果数据存在就更新ON DUPLICATE KEY UPDATE和REPLACE INTO
		#下面建立game表,设置name值为唯一索引. CREATE TABLE `game` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar( ... 
- MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况
		在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新:如果插入的行数 ... 
- MySQL-插入更新 ON DUPLICATE KEY UPDATE
		向数据库中插入一条记录,若该数据的主键值(UNIQUE KEY)已经在表中存在,则执行后面的 UPDATE 操作.否则执行前面的 INSERT 操作. 测试表结构 CREATE TABLE `flum ... 
- SQLSERVER 中实现类似Mysql的 INSERT ON DUPLICATE KEY UPDATE
		通过SQLServer创建索引时,有一个IGNORE_DUP_KEY的选项,可以类似实现. IGNORE_DUP_KEY = { ON | OFF } 指定对唯一聚集索引或唯一非聚集索引执行多行插入操 ... 
- mysql插入数据时 insert  IGNORE、ON DUPLICATE KEY UPDATE、replace into
		转: mysql insert时几个操作DELAYED .IGNORE.ON DUPLICATE KEY UPDATE的区别 博客分类: mysql基础应用 mysql insert时几个操作DE ... 
- mysql插入操作跳过(ignore)、覆盖(replace into)、更新(on duplicate key)
		原帖地址:http:.html .insert ignore into 当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回.所以使用ignore请确保语句本身没有问题,否则也会被忽 ... 
随机推荐
- geopandas overlay 函数报错问题解决方案
			前言 这篇文章依旧是基于上一篇文章(使用Python实现子区域数据分类统计)而写,此文章中介绍了使用 geopandas 的 overlay 函数对两个 GeoDataFrame 对象取相交或相异的部 ... 
- 补充:ajax PHP html js 实现 三级联动(省 市 区)
			html + js 在一个页面 php 
- 算法基础_递归_给定m个A,n个B,一共有多少种排列
			问题描述: 给定m个A,n个B,一共有多少种排列 解题源代码: /** * 给定m个A,n个B,问一共有多少种排列 * @author Administrator * */ public class ... 
- weui开发笔记
			1.标准的weui只是一个css皮肤,当然里面有h5特性所以有一些很好的组件,比如时间选择控件.数字输入框(用于手机号等),在ios——微信中可以做到完美的展示. 2.ui框架以手机移动端为优先显示( ... 
- Python爬虫实例(四)网站模拟登陆
			一.获取一个有登录信息的Cookie模拟登陆 下面以人人网为例,首先使用自己的账号和密码在浏览器登录,然后通过抓包拿到cookie,再将cookie放到请求之中发送请求即可,具体代码如下: # -*- ... 
- mybatis中namespace配置方式
			namespace有三种全路径的配置方式: namespace绑定实体类的全路径;绑定dao接口的全路径绑定;mapper的sql.xml文件第一种:namespace绑定实体类的全路径: 当name ... 
- 对象何时进入老年代、何时发生full gc
			一.对象何时进入老年代 (1)当对象首次创建时, 会放在新生代的eden区, 若没有GC的介入,会一直在eden区, GC后,是可能进入survivor区或者年老代 (2)当对象年龄达到一定的大小 , ... 
- 17.2-uC/OS-III消息管理(任务消息队列)
			1.任务的消息队列 uC/OS-III在任务中内建了一个消息队列.用户可以直接发送消息给任务而不通过外部消息队列. 这个特性不仅简化了代码, 还提供了效率.每个任务都内建一个消息队列. uC/OS-I ... 
- Android ListVeiw控件(转载整理)
			列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View. 2.适配器 用来把数据映射到ListView上的中介. 3.数据 具体的将被映射的字符串,图片,或者基本组件. 根据列表 ... 
- 【JVM】-NO.114.JVM.1 -【JDK11 HashMap详解-3-put-treeifyBin()-AVL】
			Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ... 
