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

Mysql 4 种方式避免重复插入数据!

时间:2023-02-02 21:22:14浏览次数:39  
标签:username 索引 重复 MySQL 插入 Mysql 数据 主键

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

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

1、insert ignore into

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

2、on duplicate key update

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

3、replace into

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

4、 insert if not exists

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

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

来源:https://juejin.cn/post/6923558675277676558

标签:username,索引,重复,MySQL,插入,Mysql,数据,主键
From: https://www.cnblogs.com/konglxblog/p/17087459.html

相关文章

  • mysql的元数据锁:metadata_locks
    ############################# MDL全称为metadatalock,即元数据锁。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务(显式或隐式)的时候,不可以对元数据进行写......
  • 35流程控制 - 重复执行 - 小练习(九层妖塔)
    packagechapter03;publicclassJava06_FlowControl_Test{publicstaticvoidmain(String[]args){//TODO流程控制-小练习//九层妖塔......
  • 34流程控制 - 重复执行(break和continue)
    packagechapter03;publicclassJava05_FlowControl_01{publicstaticvoidmain(String[]args){//TODO流程控制-重复执行(循环执行)//for(......
  • 批量插入通话记录
    简单的demo帮测试生成通话记录。1:申请权限android.permission.WRITE_CALL_LOG2:核心代码privatevoidinsertCallLog(Stringnumber,Stringduration,Stringtype,......
  • MySQL基础
    vsMySQL数据库1.数据库相关概念数据库:存储数据的仓库,数据是有组织的进行存储,英文:DataBase,进程DB存储和管理数据的仓库其本质是一个文件系统,还是以文件的方式将......
  • 31-33流程控制 - 重复执行(3个)
    packagechapter03;publicclassJava05_FlowControl{publicstaticvoidmain(String[]args){//TODO流程控制-重复执行(循环执行)//根据条件......
  • mysql悲观锁 (使用行级锁,走索引字段,必须是具体值)
        不需要加锁,一行更新语句即可,符合原子性   对于没有加注解的,mysql也会对增删改的自动加上事务,autocommit=0的时候才没有事务,其他都有事务开启......
  • mysql创建视图注意事项
    转自:https://www.cnblogs.com/cctvyuzhou/p/8985582.html可以使用CREATEVIEW语句来创建视图语法格式如下:CREATEVIEW<视图名>AS<SELECT语句>语法说明如下。1......
  • python mysql直接导出excel文件
    importpymysqlimportxlwt#数据库连接对象conn=pymysql.connect(host='124.71.72.144',port=3306,user='root',password="gClUjjCh2tozZY23o",db="pay",chars......
  • 【推荐】MySQL数据库设计SQL规范
    1命名规范1、【强制】库名、表名、字段名必须使用小写字母并采用下划线分割,禁止拼音英文混用;(禁用-,-相当于运算符)2、【建议】库名、表名、字段名在满足业务需求的条件下使用......