mysql插入一条数据方式有四种,接下来逐个说明验证:

前提:

有一个表,作为本次测试:

CREATE TABLE `zs_test` (`id` int(11) NOT NULL AUTO_INCREMENT,`order_id` int(11) DEFAULT NULL,`name` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `order_id_index` (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

表名是zs_test;
包括主键id,唯一索引order_id和普通列name;

INSERT INTO

最普通,最常用的插入是:
INSERT INTO zs_test (id,name,order_id) VALUES (1,‘aa’,11);
此时库中有了一条数据,id=1;name=‘aa’;order_id=11

id name order_id
1 aa 11

INSERT IGNORE INTO

  • 1.用这个插入一条,主键和唯一索引都是新的:

INSERT IGNORE INTO zs_test (id,name,order_id) VALUES (2,‘bb’,12);
也成功,受影响的行数是1,此时库中有两条数据,

id name order_id
1 aa 11
2 bb 12

当本次要插入的主键id和唯一索引order_id在库中都没有重复时,INSERT IGNORE INTO相当于INSERT INTO;

  • 2.再插入一条,主键用了1,库中已存在的:

INSERT IGNORE INTO zs_test (id,name,order_id) VALUES (1,‘bb’,13);
没有报错,受影响的行数是0,但是数据库中的数据没有变化,

id name order_id
1 aa 11
2 bb 12
  • 3.再插入一条,唯一索引用了11,库中已存在的:

INSERT IGNORE INTO zs_test (id,name,order_id) VALUES (3,‘bb’,11);
没有报错,受影响的行数是0,但是数据库中的数据没有变化,

id name order_id
1 aa 11
2 bb 12

当本次要插入的主键id或者唯一索引order_id在库中有任何一个重复时,INSERT IGNORE INTO相当于不执行任何操作;


REPLACE INTO

  • 1.用这个插入一条,主键和唯一索引都是新的:

REPLACE INTO zs_test (id,name,order_id) VALUES (3,‘cc’,13);
也成功,受影响的行数是1,此时库中有三条数据,

id name order_id
1 aa 11
2 bb 12
3 cc 13

当本次要插入的主键id和唯一索引order_id在库中都没有重复时,REPLACE INTO相当于INSERT INTO;

  • 2.再插入一条,主键用了1,库中已存在的:

REPLACE INTO zs_test (id,name,order_id) VALUES (1,‘bb’,14);
执行成功,受影响的行数是2,此时库中有三条数据,但是主键为1的那条数据,他的order_id变成了14,name也变成bb

id name order_id
1 bb 14
2 bb 12
3 cc 13

当本次要插入的主键id和唯一索引order_id在库中有任何一个重复时,REPLACE INTO相当于先删除原数据,再INSERT INTO本条数据,所以受影响行数是2;


ON DUPLICATE KEY UPDATE

  • 1.用这个插入一条,主键和唯一索引都是新的:
    INSERT INTO zs_test (id,name,order_id) VALUES (5,‘aa’,15) ON DUPLICATE KEY UPDATE name=‘aabb’;
    成功,受影响的行数是1,此时库中有四条数据,
id name order_id
1 bb 14
2 bb 12
3 cc 13
5 aa 15

当本次要插入的主键id和唯一索引order_id在库中都没有重复时,ON DUPLICATE KEY UPDATE后面的部分相当于没写,只是简单的前面INSERT INTO的效果;

  • 2.再插入一条,主键用了1,库中已存在的,唯一索引随意:
    INSERT INTO zs_test (id,name,order_id) VALUES (1,‘aa’,12) ON DUPLICATE KEY UPDATE name=‘aabb’;
    成功,受影响的行数是2,此时库中有四条数据,但主键为1的那条数据的name值变成了aabb
id name order_id
1 aabb 14
2 bb 12
3 cc 13
5 aa 15

当本次要插入的主键id库中有重复时,ON DUPLICATE KEY UPDATE相当于不改变数据,将后面update的值做修改;

[数据库]---mysql 插入sql之 INSERT INTO和INSERT IGNORE INTO和REPLACE INTO和ON DUPLICATE KEY UPDATE比较应用相关推荐

  1. MySQL于ON DUPLICATE KEY UPDATE采用

    今天我们做的推断插入用途MySQL于ON DUPLICATE KEY UPDATE.现在,Mark下面! 假设你想做的事,再有就是在数据库中插入数据没有数据.如果有数据更新数据,然后你可以选择ON D ...

  2. MySql避免重复插入记录的方法(INSERT ignore into,Replace into,ON DUPLICATE KEY UPDATE)

    案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下 复制代码 1 INSERT IGNORE INTO table ...

  3. MySQL 当记录不存在时insert,当记录存在时update(ON DUPLICATE KEY UPDATE, REPLACE语句)...

    MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法. 第一种:示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语 ...

  4. mysql insert delayed_mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )

    INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] V ...

  5. mysql insert into on_MySQL之INSERT INTO ON DUPLICATE KEY UPDATE用法详解 | 夕辞

    MySQL数据库使用中如果主键或唯一键冲突,会报错,因此我们会用到insert into on duplicate key update语法,但是该语法具体怎么用以及返回什么值,今天就来讨论下. 首先 ...

  6. MySQL的INSERT INTO··· ON DUPLICATE KEY UPDATE使用的几种情况

    保存或更新 在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新:如 ...

  7. MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况

    MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况 在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句 ...

  8. MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

    本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考. 案一:使用ignore ...

  9. mysql delayed_mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )

    mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE ) 更新时间:2010年04月14日 13:46:04   作者: DELAYED 做 ...

最新文章

  1. AI实时特效,魔幻修图,Adobe Photoshop相机拯救PS菜鸟
  2. 2015.4.25-2015.5.1 字符串去重,比例圆设计,中奖机和canvas橡皮擦效果等
  3. AMD:“全民四核”大作战
  4. Try to create new xs project in AG3
  5. .NET+Sqlite如何支持加密
  6. AspectCore中的IoC容器和依赖注入
  7. PS教程第二课:PS安装
  8. windows 下 git 禁用 CRLF 转换 LF
  9. 如何使用 Cloud Insight SDK 实现 Druid 监控?
  10. 凸优化第六章逼近与拟合 6.2 最小范数问题
  11. 读书印记 - 《终极算法》
  12. EXCEL 基础函数大全
  13. Mac OS使用FFmpeg进行视频H264,H265编码
  14. 浅谈UAC ByPass
  15. C# GDI 手绘图片转化为电子版处理
  16. Python 具名元组
  17. 我国OLED技术和OLED显示屏的发展历程
  18. 使用go get安装,老是报错:go: golang.org/x/tools@v0.0.0-20190322203728-c1a832b0ad89: unrecognized import path
  19. 浙江污水处理厂数字孪生平台建模_三维激光扫描_吉优赛维三维可视化管理平台_三维建模_3D模型
  20. 慧数汽车大数据:中国多功能轿车(旅行车)市场研究报告(2018简版)

热门文章

  1. PHP中对hmac_sha1签名算法的实现方法
  2. 计算机软考笔记之《数据库基础》
  3. excel导入数据到sqlserver
  4. AspNetPager 修改 然后返回当前页
  5. @font-face
  6. 切洋葱怎么才不流泪?
  7. Spring常用注解的讲解
  8. 如何看打印机的缓存区域_松下打印机好吗 松下打印机卡纸如何解决【详解】...
  9. Linux可以对目录进行硬链接,Linux硬链接与软链接原理及用法解析
  10. java开发项目实例_Alibaba内部出品Java突击手册,大量开发实战项目分享