4种常见insert方式

准备工作

CREATE TABLE `identity_table` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',`identity_id` int(11) DEFAULT NULL COMMENT '身份Id',`name` varchar(255) DEFAULT NULL COMMENT '姓名',PRIMARY KEY (`id`),UNIQUE KEY `identity_idx` (`identity_id`) COMMENT '身份id唯一索引'
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

1、insert into

最常用的插入方式,该命令在执行数据插入操作时,会在当前表中对主键或unique索引进行检测,若没有存在,则执行插入动作,若存在主键相同或unique索引相同的数据,执行会报错。

当重复插入唯一索引的值时

2、insert ignore into

主要作用:用来排除数据重复的。
会忽略数据库中已经存在的记录,如果表中存在主键或unique索引相同的数据不在插入该条数据,反之则插入(存在则忽略,反之插入)这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

3、replace into

如果表中存在与主键或unique索引相同的数据,则替换掉该主键或unique索引的记录,反之则插入。 在替换掉元素时相当于删除之前的插入最新的,相当于执行了两条sql。所以说替换掉元素时递增主键之前和之后是有区别的。

4、insert into *** on duplicate key update

一句话概括:当insert已存在的记录时执行update
(与replace into的区别在于:replace是完全替换成新的数据记录,此处是修改不同的地方,新纪录中没有的部分依然采用老记录中的数据。)


可以看到受影响行为2行,这是因为这是将原有记录进行修改了,而不是插入执行。

当我们插入多条数据时有的存在有的不存在那么该如何执行呢?

insert into identity_table(identity_id,`name`)
values(110,'张三'), # 重复项(222,'李四')  # 非重复项
on duplicate key update`name`='王武'


可以看到在执行重复的记录时进行了update,在执行没有重复的记录时进行了插入。

on duplicate key update 后不只是跟固定值 也可以动态的传参

insert into identity_table(identity_id,`name`)
values(110,'刘麻子'), # 重复项(222,'王嘎子'), # 重复项(333,'哈拉子') # 非重复项
on duplicate key update`name`=values(`name`)


可以看到name列被动态的修改,在开发需求中,这样插入连事物都省的做。

Mysql中4种常见的插入方式相关推荐

  1. Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求

    Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939 版权声明:本 ...

  2. unity3d中画线有几种方式_Spring RestTemplate中几种常见的请求方式

    原文 https://segmentfault.com/a/1190000011093597 在Spring Cloud中服务的发现与消费一文中,当我们从服务消费端去调用服务提供者的服务的时候,使用了 ...

  3. Spring RestTemplate中几种常见的请求方式

    关注公众号[江南一点雨],专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货! 在Spring Cloud ...

  4. Java RestTemplate中几种常见的请求方式

    在REST接口的设计中,利用RestTemplate进行接口测试是种常见的方法.本文主要从以下四个方面来看RestTemplate的使用: GET请求 POST请求 PUT请求 DELETE请求 OK ...

  5. MySQL中几种常见的函数及具体操作

    函数 函数 是指一段可以直接被另一段程序调用的程序或代码. 也就意味着,这一段程序或代码在MySQL中 已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可. 那 么, ...

  6. JavaScript中6种常见的继承方式

    为什么需要继承? 在实际编码的过程中,如果有很多类似的方法都存放于构造函数中,这样会导致内存的浪费(内存泄漏),在这种情况下我们就需要用到继承. 继承是什么? 所谓继承就是通过某种方式让一个对象可以访 ...

  7. java获取项目中的路径_java中几种获取项目路径方式

    转自http://caodaoxi.iteye.com/blog/1234805 在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录是Web ...

  8. Unity中的资源管理-几种常见的序列化方式

    本文分享Unity中的资源管理-几种常见的序列化方式 在网游客户端的开发中, 大部分数据只需要从服务器获取数据之后存放在内存中, 但是仍然有一些数据需要做序列化, 并持久化存放在客户端本地. 比如用户 ...

  9. IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解

    IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解 0.前言 一.光学传感器模块: 1. 光敏传感器模块: 2. 红外避障模块 3. 循迹传感器模块 4. U型光电传感器模块 5. 红外接收模 ...

最新文章

  1. 消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法
  2. java 倾斜校正_简述Java图像倾斜方法及实例
  3. inaflash什么意思中文_英文“flash”翻译成中文是什么意思?
  4. QEMU KVM 虚拟机移植之性能提高篇小结(android 虚拟机双系统方案)
  5. 2、基于wsgiref模块DIY一个web框架
  6. 纯脚本创建桌面快捷方式
  7. Tornado 高并发源码分析之六---异步编程的几种实现方式
  8. 浅谈 Kubernetes 服务发现
  9. JAVA获取程序/jar包所在路径
  10. 计算机网络 —— 组网
  11. 音视频中的语音信号处理技术
  12. 如何区分前后端bug
  13. 【JZOJ6124】有限空间跳跃理论
  14. javascript_JSON.parse() 与 JSON.stringify()_ZHOU125disorder_
  15. 优化vue打包chunk-vendors.js 过大
  16. Spring boot +Mybaits
  17. 网站分析平台:百度统计、谷歌统计、网数星,统计平台怎样选择?
  18. 自然语言处理之机器智能
  19. 用python制作水仙花
  20. vue项目读取显示pdf文件

热门文章

  1. 实验六:派生类与继承
  2. springboot实战项目----天猫整站---how2j
  3. 自定义input file样式
  4. centos8配置静态ip+网桥(对比centos7)
  5. 薄板样条插值---Thin plate spline (TPS)
  6. 论文阅读 【CVPR-2022】 A ConvNet for the 2020s
  7. 中国汽车品牌口碑榜之:--2013年第3季度福州跑车综合口碑排名
  8. 软件测试涨工资啦!你知道吗?看看你有没有达到涨薪条件?
  9. 超炫的3D桌面,多种特效,展示
  10. requests的时候,遇到 InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate ve