首页 > 数据库 >避免 MySQL 插入重复数据的 4 种方式

避免 MySQL 插入重复数据的 4 种方式

时间:2023-01-11 14:56:13浏览次数:45  
标签:username 索引 重复 插入 MySQL 数据 主键

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

这里为了方便演示,我新建了一个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种方式适合字段设置了主键或唯一索引,最后一种方式则没有此限制,只要你熟悉一下使用过程,很快就能掌握的,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下

标签:username,索引,重复,插入,MySQL,数据,主键
From: https://www.cnblogs.com/Dr-wei/p/17043750.html

相关文章

  • MySql基础-笔记2 -数据库创建、删除、选择等操作
    在MySql数据库基础1-Windows下安装配置图文教程的基础上,我们来了解如何对数据库进行操作,比如常见的创建数据库、删除数据库、选择数据库等;(目录)1、连接数据库简单的方......
  • Docker 打包MySQL (带数据源打包) 并加载打包后镜像运行
    前言mysql镜像的数据默认都在/var/lib/mysql目录下,我们修改默认的数据库的数据位置就行,不要放在/var/lib/mysql下面。操作1.创建mysql源数据备份目录mkdir/mysqldata......
  • mysql 备份定时任务
    #!/bin/bashrq=`date+%Y-%m-%d-%H`#日期#数据库信息host=127.0.0.1user=rootpassword=xxxdbname=script#放在这个目录path=/usr/local/backups/sqlmysqldump-h......
  • mysql导出表数据
    -T表-B备份数据库-t线程数-r多少行-c压缩输出文件--less-locking在InnoDB表使用最小的锁表时间导出表结构mydumper-h127.0.0.1-uroot-p*-Btest-t......
  • Oracle分页查询出现重复数据的解决方法
    在使用MybatisPlus分页功能时发现:前端查询第一页是没问题的,但是向后查询的时候数据始终是第一页的查询第一页的时候发现没有任何问题往后查询,比如查询第二页时数据......
  • 实训体会--swing和mysql的使用
    结构设计思想:前端界面和后端数据库通过一个中间件操作。中间件就像一个中间助手,每一个前端界面通过一个具象的中间助手进行操作。最大的设计错误:中间件不是一个具象的实......
  • MySql树形结构(多级菜单)查询设计方案
    背景又很久没更新了,很幸运地新冠引发了严重的上呼吸道感染,大家羊过后注意休息和防护工作中(尤其是传统项目中)经常遇到这种需要,就是树形结构的查询(多级查询),常见的场景有:......
  • 找出整型数组中重复次数最多元素集合中的最小值
    考虑用map去处理,然后筛选出map里值最大的元素集合,最后集合中键最小的那个元素  importjava.util.*;importjava.util.stream.Collectors;publicclassMain{......
  • Excel 20w数据解析成可插入SQL脚本
    背景:上游系统有15万+生产商品数据要导入到我们系统(只同步一次),这个数据需要各个服务owner修改完价格之后一一确认之后才能导入,既然是多个人经手改,模板就可能会变动,使用ex......
  • python操作mysql数据库,增删查改等需要执行后加commit()
    p1:关于commit方法第一感觉是这个方法只用来提交“数据”,比如插入数据、更新数据需要在execute()后面跟上一个commit();现在看来,commit()方法需要跟在增(insert)、删(delete)、......