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请确保语句本身没有问题,否则也会被忽 ...
随机推荐
- ZIP解压缩工具类
import java.io.File; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.Expan ...
- java Illegal unquoted character ((CTRL-CHAR, code X)): has to be escaped using backslash to be included in string value
今天在同步日志到ES的时候出现转换Json后 存到es中报这个错. Illegal unquoted character ((CTRL-CHAR, code X)): has to be escape ...
- 解决Office 2016客户端如何同SharePoint Server2016安装在一起
前言 Microsoft Office 2016 客户端默认使用新式验证. 在某些配置中,新式验证不受安装有 SharePoint Server 2016 的 Office 2016 客户端的支持,例 ...
- windows 安装 Apache、php、mysql及其配置(转载)
此文包括的注意内容:软件版本及下载地址Apache2.4的配置和安装php7.0的配置mysql5.5的安装常见问题及解决方法1.软件版本Windows server 2008 r2+ 64位Apac ...
- jquery和ajax和springmvc
<script type="text/javascript" src="js/jquery-1.11.1.js"></script> $ ...
- Angel - 模拟Kafka数据流调试FTRL的方法
Angel - 模拟Kafka数据流调试FTRL的方法 Mac或者Linux版本(Win10的Linux子系统同样适用) 创建一个目录用来安装kafka以及zookeeper等相关软件,比如,新建一个 ...
- js设计模式(六)---组合模式
组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构.除了用来表示树形结构之外,组合模式的另一个好处是通过对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性.基本图例 1.组合模式 ...
- vue脚手架---vue-cli
开年第一篇 今天先讲一讲 vue-cli的安装 npm install vue-cli 可能需要很多的时间视网络环境而定, 如果长时间等待 也可以试试使用淘宝的镜像(cnpm)安装( npm inst ...
- GitHub 设置首页显示 404 There isn't a GitHub Pages site here.
问题如题! 能使用的必要条件是: 1.创建的仓库 Code 中 必须 有 README.md 文件,内容自定 2.设置模板在仓库中 Settings -->GitHub Pages --> ...
- VMware Workstation下ubuntu虚拟机无法上网连不上网络解决
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...