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

 更新时间:2021年02月01日 09:59:07   作者:xcbeyond  
这篇文章主要介绍了Mysql避免重复插入数据的4种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

到此这篇关于Mysql避免重复插入数据的4种方式的文章就介绍到这了,更多相关Mysql避免重复插入数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • centos7.4系统中yum源安装mysql 5.6

    centos7.4系统中yum源安装mysql 5.6

    本文给大家介绍的是如何在centos7.4系统中通过yum源安装MySQL 5.6数据库,CentOS7默认数据库是mariadb, 但是 好多用的都是mysql ,但是CentOS7的yum源中默认好像是没有mysql的,今天我们就来看看具体如何操作
    2018-09-09
  • MySQL下的RAND()优化案例分析

    MySQL下的RAND()优化案例分析

    这篇文章主要介绍了MySQL下的RAND()优化案例,包括对JOIN查询和子查询的优化,需要的朋友可以参考下
    2015-05-05
  • SQL中"1=1"的陷阱:为什么应避免使用

    SQL中"1=1"的陷阱:为什么应避免使用

    "1=1"在SQL中可能看似无害,但它却是一个隐藏的陷阱,这个简单的表达式可能会导致你的查询结果出现偏差,甚至可能引发安全问题,本指南将揭示这个陷阱,教你如何避免使用"1=1",让你的数据库操作更加安全、准确,让我们一起揭开"1=1"的秘密,提升你的SQL技能!
    2024-02-02
  • MySQL复合查询和表的内外连接示例详解

    MySQL复合查询和表的内外连接示例详解

    在数据库管理和数据分析中,单表查询往往无法满足复杂的数据查询需求,因此多表查询和子查询成为了解决问题的关键技术,MySQL支持多种多表查询方式,如内连接、外连接(左外连接和右外连接)以及自连接,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • mysql 8.0.12 安装配置方法图文教程

    mysql 8.0.12 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.12 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • MySQL占用CPU过高排查过程及可能优化方案

    MySQL占用CPU过高排查过程及可能优化方案

    这篇文章主要介绍了MySQL占用CPU过高排查过程及可能优化方案,具有很好的参考价值,希望对大家的学习或工作有所帮助,感兴趣的朋友可以参考下
    2024-01-01
  • MySQL主从搭建(多主一从)的实现思路与步骤

    MySQL主从搭建(多主一从)的实现思路与步骤

    通过MySQL主从配置,可以实现读写分离减轻数据库压力,最近正好遇到这个功能,所以这篇文章主要给大家介绍了关于MySQL主从搭建(多主一从)的实现思路与步骤,需要的朋友可以参考下
    2021-05-05
  • 在Linux系统安装MySql步骤截图详解

    在Linux系统安装MySql步骤截图详解

    本文给大家介绍的是linux系统下使用官方编译好的二进制文件进行安装MySql的安装过程和安装截屏,这种安装方式速度快,安装步骤简单。需要的朋友可以参考下在Linux系统安装MySql步骤截图详解
    2016-10-10
  • mysql 8.0.18 mgr 搭建及其切换功能

    mysql 8.0.18 mgr 搭建及其切换功能

    这篇文章主要介绍了mysql 8.0.18 mysql搭建及其切换功能,本文通过实例代码给大家讲解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • MySQL-8.0.26配置图文教程

    MySQL-8.0.26配置图文教程

    最近公司项目更换数据库版本,在此记录分享一下自己安装配置MySQL8.0版本的过程吧,本文通过图文并茂的形式给大家介绍的非常详细,对MySQL-8.0.26配置教程感兴趣的朋友跟随小编一起看看吧
    2021-12-12

最新评论