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

这里为了方便演示,我新建了一个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数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略:

目前,就分享这4种MySQL处理重复数据的方式吧,前3种方式适合字段设置了主键或唯一索引,最后一种方式则没有此限制,只要你熟悉一下使用过程,很快就能掌握的,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下。

好文章,我在看

bd2和mysql语法区别,经验:在MySQL数据库中,这4种方式可以避免重复的插入数据!...相关推荐

  1. 在MySQL数据库中,这4种方式可以避免重复的插入数据!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:小小猿爱嘻嘻 wukong.com/question/674 ...

  2. mssql mysql 语法区别_mssql与mysql区别之——变量区别

    sql server中变量要先申明后赋值: 局部变量用一个@标识,全局变量用两个@(常用的全局变量一般都是已经定义好的): 申明局部变量语法:declare @变量名 数据类型:例如:declare ...

  3. db2与mysql语法区别,db2和mysql语法分析异同点

    1.建表: (1)创建基本表二者是一致的 mysql:create table person(name varchar(10),age int) db2: 同上. (2)mysql支持在创建表的时候指 ...

  4. mssql与mysql语法区别_MSSQL与MySQL语法区别

    就目前碰到的不一样的地方集中记录在这篇日志中,不定期更新. 1.批量执行SQL语句 MSSQL中,所有语句执行过程中无需在末尾加分号『;』 MySQL中,单条语句不用加分号,多条执行时每句末尾需要添加 ...

  5. Mysql磁盘空洞的成因以及重建表的几种方式

    详细介绍了Mysql删除数据但是磁盘占用并没有减少的原因--磁盘空洞,以及磁盘空洞的解决方法和几种重建表的方式的区别. 有时候我们直接物理删除变种的某些数据,以期望减少磁盘的占用,但是我们会发现即使物 ...

  6. 视频教程-怎么架构生产数据库--生产数据库优化的一种方式-MySQL

    怎么架构生产数据库--生产数据库优化的一种方式 运维经理,高级架构师.曾任职于NEC软件.海尔B2B平台巨商汇,负责企业数据平台构建.B2B电商平台数据管理与搭建.企业运维管理平台搭建.拥有丰富DBA ...

  7. orcle与mysql的区别_Orcle与MySQL的SQL语法区别:

    Orcle与MySQL的SQL语法区别: 1.在Oracle中用 select * from all_users显示所有的用户,而在MySQL中显示所有数据 库的命令是 show databases ...

  8. db2和mysql语句区别_db2和mysql语法的区别是什么

    MySQL默认使用大小写敏感的数据库名.表名和列名(可以通过lower_case_table_names参数控制是否大小写敏感),DB2数据库对大小写不敏感. 虽然MySQL与DB2都遵循并符合SQL ...

  9. MySQL数据库:pg和mysql语法区别

    ClickHouse 是什么? ClickHouse:是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS) 我们首先理清一些基础概念 OLTP:是传统的关系型数据库,主要操作增删改查,强调事 ...

最新文章

  1. #Ruby# Introspect (2)
  2. Java BitSet使用场景和示例
  3. 只有失去了,才知道珍惜!!!
  4. leetcode -- Balanced Binary Tree TODO
  5. Linux cat指令(用于连接文件并打印到标准输出设备上)
  6. 队列的C语言实现(通过内核链表)
  7. android将拍摄的图片存入sd卡中,Android将图片保存至SD卡上
  8. 红橙Darren Android视频笔记 自定义view的三个构造方法以及一种实现换肤的方案 测量mode
  9. python寻找list中最大值、最小值并返回其所在位置
  10. php 用户之间通信,PHP,javascript,ajax-2位用户之间的通信
  11. 人口预测模型基础介绍
  12. Excel如何批量生成条形码
  13. 狂妄之人计算机音乐,Undertale音乐 MEGALOVANIA 狂妄之人
  14. java文件怎么保存_java 文件保存和打开
  15. 前端踩坑日记 npm install -g ...
  16. 利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第一篇“显示贪吃蛇”
  17. 位图+布隆过滤器-待续
  18. 生成带有logo的二维码
  19. 彻底搞懂Python切片操作_xing2516_新浪博客
  20. 01-JAVA基础_1.1 详细简介

热门文章

  1. 二叉树中和为某一值的路径
  2. 利用cre2进行分组模式匹配的实例
  3. 学习原来可以如此简单
  4. pytorch 调用forward 的具体流程
  5. LeetCode简单题之汇总区间
  6. ONNX MLIR方法
  7. 神经网络AI加速器技术
  8. [C] [最短路] 只有5行的算法:Floyd-Warshall
  9. Android 使用adb 命令截图 的方法
  10. Android Dialog 的使用总结(AlertDialog)