最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下:

这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:

01 insert ignore into

即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据:

02 on duplicate key update

即插入数据时,如果数据存在,则执行更新操作,前提条件同上,也是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则执行update更新操作,如果不存在,则直接插入:

03 replace into

即插入数据时,如果数据存在,则删除再插入,前提条件同上,插入的数据字段需要设置主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则先删除旧数据,然后再插入,如果不存在,则直接插入:

04 insert if not exists

即insert into … select … where not exist … ,这种方式适合于插入的数据字段没有设置主键或唯一索引,当插入一条数据时,首先判断MySQL数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略:

经验:在mysql中避免重复插入数据的4种方式相关推荐

  1. MySQL忽略主键冲突,避免重复插入数据的三种方式

    方案一:ignore 插入时检索主键列表,如存在相同主键记录,不更改原纪录,只插入新的记录. INSERT IGNORE INTO ignore关键字所修饰的SQL语句执行后,在遇到主键冲突时会返回一 ...

  2. mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  3. mysql 禁止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  4. map容器对象插入数据的4种方式讲解

    map容器对象插入数据的4种方式讲解 map容器对象插入数据的4种方式 #include <string> #include <iostream>  #include < ...

  5. oracle 批量导入 数据,Oracle批量插入数据的三种方式【推荐】

    第一种: begin insert into tableName(column1, column2, column3...) values(value1,value2,value3...); inse ...

  6. Mybatis批量插入数据的两种方式

    总体描述 软件开发过程中需要批量插入数据的场景有几种: 从离线文件(excel, csv等)导入大批量数据到系统. 从其它系统定时或者人工同步大批量数据到系统. 程序自身的某些算法执行时会生成大批量数 ...

  7. mysql中关于批量插入数据(1万、10万、100万、1000万、1亿级别的数据)二

    硬件:windows7+8G内存+i3-4170处理器+4核CPU 关于前天写的批量插入数据,还有一种方式,就是通过预先写入文本文件,然后通过mysql的load in file命令导入到数据库,今天 ...

  8. Mysql中Innodb大量插入数据时SQL语句的优化

    innodb优化后,29小时入库1300万条数据 参考:http://blog.51yip.com/mysql/1369.html 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据: A ...

  9. 向数据库中插入数据的三种方式

    在数据库中,向数据库中插入数据,使用insert into关键字.在数据库中插入数据有三种方法. 1)插入单个字段的情况 insert into table_name(列名) values(值); 2 ...

最新文章

  1. windows测试模式打开关闭
  2. Socket编程原理概述
  3. Oracle数据库的轻松干净卸载
  4. 修改Tomcat默认端口号,避免与IDEA冲突
  5. Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist的
  6. [云炬创业基础笔记]第二章创业者测试10
  7. 【Python基础】在pandas中利用hdf5高效存储数据
  8. Spring事务源码分析
  9. 6-4-1:STL之list——list的快速入门、常用接口
  10. 掀开图片显示介绍的css效果
  11. hdu 1559 最大子矩阵(DP)
  12. Docker使用小结(二)Docker仓库 Docker数据管理 端口映射与容器互联
  13. java字符串模糊匹配_正则表达式实现字符的模糊匹配功能示例
  14. visio如何粘附或取消粘附连接线
  15. 微信小程序-图片上传功能的实现
  16. 数据结构、栈和队列、树和二叉树
  17. Kafka的入门级API应用
  18. 自动驾驶轨迹规划--算法综述
  19. 【程序设计赛】华为 · 厦门开发者创新应用赛 #鸿蒙应用开发 #¥32,000
  20. 013. 跟郑军老师再聊科幻

热门文章

  1. SQL 批量插入有标识列的数据
  2. 图的根节点-数据结构作业。。
  3. vue 获取元素在浏览器的位置_JavaScript获取窗口位置和元素坐标(兼容版)
  4. easyexcel模板循环模板怎么循环_雅思大作文怎么熟练套模板
  5. flink 5-窗口和时间
  6. python热部署_定时任务-Quartz(热部署、冷部署)
  7. 2018年秋计算机基础在线作业,《计算机应用基础》2017年的秋学期在线作业三.doc...
  8. 四十、SPSS数据汇总,图表制作,频率分析和描述分析
  9. EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs'
  10. 博士申请 | 北京理工大学宋承天老师组招收目标感知与识别方向博士生