返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SQL语句中的ONDUPLICATEKEYUPDATE使用
  • 276
分享到

SQL语句中的ONDUPLICATEKEYUPDATE使用

SQLONDUPLICATEKEYUPDATE 2022-11-13 14:11:51 276人浏览 泡泡鱼
摘要

目录一:主键索引,唯一索引和普通索引的关系主键索引唯一索引:普通索引:二:ON DUPLICATE KEY UPDATE使用测试(Mysql下的Innodb引擎)1:ON D

一:主键索引,唯一索引和普通索引的关系

主键索引

主键索引是唯一索引的特殊类型。 
数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。 
数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。主键索引不能为空。每个表只能有一个主键

唯一索引:

不允许两行具有相同的索引值。但可以都为NULL,笔者亲试。 
如果现有数据中存在重复的键值,则数据库不允许将新创建的唯一索引与表一起保存。当新数据将使表中的键值重复时,数据库也拒绝接受此数据。每个表可以有多个唯一索引

普通索引:

一般的索引结构,可以在条件删选时加快查询效率,索引字段的值可以重复,可以为空值

二:ON DUPLICATE KEY UPDATE使用测试(mysql下的Innodb引擎)

上面介绍了索引的知识,是为了介绍这个ON DUPLICATE KEY UPDATE功能做铺垫。

1:ON DUPLICATE KEY UPDATE功能介绍:

有时候由于业务需求,可能需要先去根据某一字段值查询数据库中是否有记录,有则更新,没有则插入。你可能是下面这样写的

if not exists (select node_name from node_status where node_name = target_name)
      insert into node_status(node_name,ip,...) values('target_name','ip',...)
else
      update node_status set ip = 'ip',site = 'site',... where node_name = target_name

这样写在大多数情况下可以满足我们的需求,但是会有两个问题。

①性能带来开销,尤其是系统比较大的时候。

②在高并发的情况下会出现错误,可能需要利用事务保证安全

有没有一种优雅的写法来实现有则更新,没有则插入的写法呢?ON DUPLICATE KEY UPDATE提供了这样的一个方式。

2:ON DUPLICATE KEY UPDATE测试样例+总结:

首先我们了解下这个简单的表结构id(主键)、code、name。

看下表中现有的数据:

执行以下实验进行分析:

实验一:含有ON DUPLICATE KEY UPDATE的INSERT语句中包含主键:

①插入更新都失败,原因是因为把主键id改成了已经存在的id

 

②执行更新操作。这里的数据还是四条。不过第四条的id由75变化为85

③执行更新操作。数据总量是四条

④insert语句中未包含主键,执行插入操作。数据量变为5条

实验二:含有ON DUPLICATE KEY UPDATE的INSERT语句中包含唯一索引:

表结构中增加code的唯一索引,表中现有的数据:

①插入更新都失败,原因是因为把code改成了已经存在的code值

②执行更新操作。这里的数据总量为5条。不过第五条的code由1000变化为1200

 

③执行更新操作。数据总量五条,没有变化

④insert语句中未包含唯一索引,执行插入操作。数据量变为6条

总结:

1:ON DUPLICATE KEY UPDATE需要有在INSERT语句中有存在主键或者唯一索引的列,并且对应的数据已经在表中才会执行更新操作。而且如果要更新的字段是主键或者唯一索引,不能和表中已有的数据重复,否则插入更新都失败。

2:不管是更新还是增加语句都不允许将主键或者唯一索引的对应字段的数据变成表中已经存在的数据。

最后感谢博主文章:Mysql:插入更新语句ON DUPLICATE KEY UPDATE

到此这篇关于SQL语句中的ON DUPLICATE KEY UPDATE使用的文章就介绍到这了,更多相关SQL ON DUPLICATE KEY UPDATE内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SQL语句中的ONDUPLICATEKEYUPDATE使用

本文链接: https://lsjlt.com/news/172425.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL语句中的ONDUPLICATEKEYUPDATE使用
    目录一:主键索引,唯一索引和普通索引的关系主键索引唯一索引:普通索引:二:ON DUPLICATE KEY UPDATE使用测试(MYSQL下的Innodb引擎)1:ON D...
    99+
    2022-11-13
    SQL ON DUPLICATE KEY UPDATE
  • sql中select语句的使用示例
    这篇文章主要介绍了sql中select语句的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。SQL SELECT 语句SEL...
    99+
    2024-04-02
  • Sql server 中的bulk insert语句使用
    在SQL Server中,BULK INSERT语句用于将数据从外部文件加载到表中。这可以用于快速导入大量数据。以下是BULK IN...
    99+
    2023-09-15
    sql server
  • sql语句中的like怎么使用
    在SQL语句中,LIKE是用于模糊匹配字符串的操作符。它通常与通配符一起使用,可以在WHERE子句中筛选满足特定条件的数据。...
    99+
    2023-09-29
    sql
  • SQL中INSERT语句的使用技巧
    以下是一些在使用INSERT语句时的技巧:1. 指定要插入数据的列:可以在INSERT语句中指定要插入数据的列,这样可以确保插入的数...
    99+
    2023-09-22
    SQL
  • sql语句中的join怎么使用
    在SQL中,JOIN用于将两个或多个表中的行连接在一起。JOIN操作的基本语法如下:```sqlSELECT 列名FROM ...
    99+
    2023-10-10
    sql join
  • sql中如何使用insert语句
    小编给大家分享一下sql中如何使用insert语句,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SQL的insert语句就是插入...
    99+
    2024-04-02
  • SQL中SELECT语句如何使用
    SQL中SELECT语句如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  SQL嵌套SELECT语句的用法有哪些  1、单行子...
    99+
    2024-04-02
  • sql中如何使用case语句
    本篇文章给大家分享的是有关sql中如何使用case语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SQL中Case的使用方法Case具有两种...
    99+
    2024-04-02
  • java中如何使用sql语句
    在Java中使用SQL语句可以通过以下步骤:1. 导入JDBC相关的包,如`java.sql`和`javax.sql`。2. 加载数...
    99+
    2023-09-27
    java sql
  • sql语句中join怎么使用
    在SQL语句中,JOIN用于将两个或多个表中的行连接在一起,以便可以通过共享的列值从这些表中检索数据。JOIN的语法如下:```SE...
    99+
    2023-10-07
    sql join
  • ASP中如何使用SQL语句
    在ASP中使用SQL语句,可以通过以下步骤:1. 创建一个连接对象,连接到数据库。可以使用ADODB.Connection对象来实现...
    99+
    2023-08-09
    ASP SQL
  • sql中asc语句怎么使用
    在SQL中,ASC是用于对查询结果进行升序排序的关键字。ASC是Ascending的缩写,表示升序。 使用ASC语句的基本语法是: ...
    99+
    2024-04-09
    sql
  • R语言中如何使用SQL语句
    在R语言中,可以使用sqldf包来执行SQL语句。首先需要安装sqldf包,然后使用sqldf()函数来执行SQL语句。 以下是一个...
    99+
    2024-04-24
    R语言 SQL
  • SQL语句中的ON DUPLICATE KEY UPDATE使用
    目录一:主键索引,唯一索引和普通索引的关系主键索引唯一索引:普通索引:二:ON DUPLICATE KEY UPDATE使用测试(mysql下的Innodb引擎)1:ON DUPLICATE KEY UPDATE...
    99+
    2022-08-11
    SQLONDUPLICATEKEYUPDATE
  • 如何使用sql语句
    这篇文章给大家分享的是有关如何使用sql语句的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。update1、set一个字段在表t_test中设置第二条记录(bs为2)的p...
    99+
    2024-04-02
  • SQL Server中怎么使用Merge语句
    本篇文章给大家分享的是有关SQL Server中怎么使用Merge语句,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。面举一个例子来具体说明一下...
    99+
    2024-04-02
  • SQL Server中如何使用UPDATE语句
    这篇文章给大家介绍SQL Server中如何使用UPDATE语句,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。现实应用中数据库中的数据改动是免不了的。通常,几乎所有的用户数据库中的大部...
    99+
    2024-04-02
  • sql语句中having怎么使用
    HAVING子句用于在GROUP BY子句后进行过滤。它可以筛选出满足特定条件的分组。HAVING子句的语法如下:`...
    99+
    2023-09-05
    sql
  • 如何在PHP中使用SQL语句
    作为一种流行的编程语言,PHP提供了许多数据库操作的工具和方法,其中最常用的就是SQL(Structured Query Language)语句。SQL是一种用于访问和管理关系数据库(RDBMS)的语言,它可以允许我们通过操作表格、行和列来...
    99+
    2023-05-20
    使用 SQL PHP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作