iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中replace into与replace区别是什么
  • 440
分享到

MySQL中replace into与replace区别是什么

2024-04-02 19:04:59 440人浏览 安东尼
摘要

本篇内容介绍了“Mysql中replace into与replace区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情

本篇内容介绍了“Mysql中replace into与replace区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

MySQL中replace into与replace区别是什么

0.故事的背景

【表格结构】

CREATE TABLE `xtp_alGo_white_list` (
  `strategy_type` int DEFAULT NULL,
  `user_name` varchar(64) COLLATE utf8_bin DEFAULT NULL,
  `status` int DEFAULT NULL,
  `destroy_at` datetime DEFAULT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY `xtp_algo_white_list_UN` (`strategy_type`,`user_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin


# `strategy_type`,`user_name` 这两个是联合唯一索引,多关注后续需要用到!!!

MySQL中replace into与replace区别是什么

【需求:】

  • 根据表格里面, 209133002266账户的数据,重新插入一个用户20220302001, 使得新生成的数据中strategy_type & status & destroy_at 字段与209133002266用户的一致。

  • 使用update 一条一条更新也行,但是比较慢。

  • 使用replace into 效果会高很多,但是深入研究发现也有一些坑的地方

1.replace into 的使用方法

replace into xtp_algo_white_list (`strategy_type`, `user_name`, `status`, `destroy_at`)
select strategy_type ,20220302001, status, destroy_at from xtp_algo_white_list xawl where xawl.user_name = 209133002266;

# replace into 后面跟表格+需要插入的所有字段名(自动递增字段不用写)
# select 后面选择的字段,如果根据查询结果取值,则写字段名;如果是写死的,则直接写具体值即可
# 可以理解为,第一部分是插入表格的结构,第二部分是你查询的数据结果

2.有唯一索引时—replace into & 与replace 效果

step1: 第一次执行sql情况

replace into xtp_algo_white_list (`strategy_type`, `user_name`, `status`, `destroy_at`)
select strategy_type ,20220302001, status, destroy_at from xtp_algo_white_list xawl where xawl.user_name = 209133002266;

MySQL中replace into与replace区别是什么

【执行完之后,查询结果如下:】

MySQL中replace into与replace区别是什么

step2: 第二次执行sql情况

MySQL中replace into与replace区别是什么

MySQL中replace into与replace区别是什么

为什么第二次执行的时候,显示update 12行的数据且created at 数据更新了,而第一次会显示update 6行???

1.因为在执行sql的时候,replace into 其实分了两个步骤执行。第一步是将查询到数据转化为新的数据。第二步, 新的数据如果表中已经有相同的内容,则删除掉。如果没有相同的内容,则直接插入新的数据。

2.因如上第一次执行的时候,已经生成一次新数据了,第二次会先删除,再把最新的数据插入进去,最终才显示update 12 行

step3: 第三次执行sql情况

# 此时执行的是replace 

replace xtp_algo_white_list (`strategy_type`, `user_name`, `status`, `destroy_at`)
select strategy_type ,20220302001, status, destroy_at from xtp_algo_white_list xawl where xawl.user_name = 209133002266;

MySQL中replace into与replace区别是什么

MySQL中replace into与replace区别是什么

  • 最终查看到的情况与第二次执行的sql一样。

  • 当新数据已经存在的时候,replace into 与replace是一样的

  • 后续删除所有20220302001,执行1次,2次sql,发现replace into 与 replace 效果都是一样的

总结:】当有唯一索引限制的时候,如果新增的数据会受限于唯一索引,则数据只会插入一次,如果已经存在则会先删除再插入。此时replace into 与replace 效果一样。

3.没有唯一索引时—replace into 与 replace

我们将strategy_type & user_name 联合唯一索引删除,且删除20220302001用户所有数据。最终表格结构如下:

CREATE TABLE `xtp_algo_white_list` (
  `strategy_type` int DEFAULT NULL,
  `user_name` varchar(64) COLLATE utf8_bin DEFAULT NULL,
  `status` int DEFAULT NULL,
  `destroy_at` datetime DEFAULT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

1).replace函数的具体情况

step1:执行如下replace 对应sql:

replace xtp_algo_white_list (`strategy_type`, `user_name`, `status`, `destroy_at`)
select strategy_type ,20220302001, status, destroy_at from xtp_algo_white_list xawl where xawl.user_name = 209133002266;

MySQL中replace into与replace区别是什么

MySQL中replace into与replace区别是什么

step2:再次执行replace 对应sql:

MySQL中replace into与replace区别是什么

MySQL中replace into与replace区别是什么

  • 第二次执行replace 对应sql ,因为没有唯一索引限制,结果原始数据居然没变动。又重新生成了新的6条数据。

  • 如果后续还执行如上的sql,则数据还会继续增加

2).replace into 函数的具体情况

执行之前,先清理数据,将所有20220302001的数据都删除掉

step1:执行如下replace into 对应sql:

replace into xtp_algo_white_list (`strategy_type`, `user_name`, `status`, `destroy_at`)
select strategy_type ,20220302001, status, destroy_at from xtp_algo_white_list xawl where xawl.user_name = 209133002266;

MySQL中replace into与replace区别是什么

MySQL中replace into与replace区别是什么

step2:再次执行replace into 对应sql:

MySQL中replace into与replace区别是什么

MySQL中replace into与replace区别是什么

最终发现,没有唯一索引的时候,replace into 与replace 居然一摸一样的效果,都是继续增加数据。

4.replace的用法

  • 单独replace的作用是替换字段中某数值的显示效果。可以数值中的部分替换、也可以全部替换。

  • 如下表格,将user_name的字段,20220302改为"A_20220303"显示,并且新字段叫做new_name显示

MySQL中replace into与replace区别是什么

select *, replace(user_name,20220302,'A_20220303') as "new_name" from xtp_algo_white_list where user_name = 20220302001;

MySQL中replace into与replace区别是什么

mysql中replace into与replace区别是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中replace into与replace区别是什么

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中replace into与replace区别是什么
    本篇内容介绍了“MySQL中replace into与replace区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
    99+
    2022-10-19
  • MySQL中replace into与replace区别详解
    目录0.故事的背景1.replace into 的使用方法2.有唯一索引时—replace into & 与replace 效果3.没有唯一索引时—replace into 与 ...
    99+
    2022-08-19
    MySQLreplaceinto与replace MySQLreplaceinto MySQLreplace
  • mysql中replace into与insert into区别
    replace into 遇到主键或唯一索引冲突时,会先删除数据,再插入新数据 insert into 遇到主键或唯一索引冲突时,会直接报错,不插入数据 案例: 新建一个test表,三个字段,id,title,uid, ...
    99+
    2023-01-18
    mysqlreplaceinto mysqlinsertinto replaceinto与insertinto
  • replace与replace into怎么在Mysql数据库中使用
    本篇文章为大家展示了replace与replace into怎么在Mysql数据库中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Mysql repl...
    99+
    2022-10-18
  • MySQL into_Mysql中replace与replace into用法案例详解
    Mysql replace与replace into都是经常会用到的功能;replace其实是做了一次update操作,而不是先delete再insert;而replace...
    99+
    2022-11-12
  • MySQL中replace into怎么用
    这篇文章给大家分享的是有关MySQL中replace into怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 在Oracle中有me...
    99+
    2022-10-18
  • Java中replace与replaceAll的区别是什么
    Java中replace和replaceAll方法都是用来替换字符串中的字符或字符串,但是它们的区别主要有以下几点:1. 参数类型:...
    99+
    2023-08-15
    Java replace replaceAll
  • MySQL中replace into 语句的作用是什么
    这期内容当中小编将会给大家带来有关MySQL中replace into 语句的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  在主库上操作。  代码...
    99+
    2022-10-18
  • mysql的replace into语句有什么用
    本篇内容主要讲解“mysql的replace into语句有什么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql的replace into语句有什么用...
    99+
    2022-10-18
  • MySQL中replace into语句怎么使用
    在MySQL中,`REPLACE INTO`语句用于插入新记录或更新已存在的记录。它的语法如下:```sqlREPLACE INTO...
    99+
    2023-09-14
    MySQL
  • 浅谈Java中replace与replaceAll区别
    在Java中,replace和replaceAll都是用于替换字符串中的字符或字符串的方法,但它们之间有一些区别。1. 参数类型:-...
    99+
    2023-08-14
    Java
  • java replace和replaceall的区别是什么
    在Java中,`replace`和`replaceAll`是字符串类(`String`)的方法,用于替换字符串中的字符或子字符串。它...
    99+
    2023-09-14
    java
  • Java中replace与replaceAll的区别与测试
    目录一、简述二、异同三、测试总结一、简述 【replace】的参数是 char 和 CharSequence,既支持字符的替换,也支持字符串的替换(CharSequence即字符串序...
    99+
    2022-11-13
  • MySQL中怎么使用replace into语句处理出错
    这篇文章给大家分享的是有关MySQL中怎么使用replace into语句处理出错的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。replace into实现原理如果新插入行的主键或唯一键在表中已经存在,...
    99+
    2023-06-14
  • mysql中insertignore、insert和replace的区别及说明
    目录insert ignore、insert和replace的区别测试代码insertreplaceinsert ignoreinsert ignore、insert和re...
    99+
    2022-11-13
  • mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点实例分析
    本文实例讲述了mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点。分享给大家供大家参考,具体如下: replace into...
    99+
    2022-10-18
  • mysql中insert ignore、insert和replace的区别及说明
    目录insert ignore、insert和replace的区别测试代码insertreplaceinsert ignoreinsert ignore、insert和replace的区别 指令已存在不存在举例...
    99+
    2022-08-25
  • mysql中replace函数有什么作用
    这篇文章主要讲解了“mysql中replace函数有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中replace函数有什么作用”吧!说明可以替换字符串中的内容,...
    99+
    2023-06-20
  • python中replace的用法是什么
    在Python中,replace()方法用于替换字符串中的指定字符(或字符串)为另一个字符(或字符串)。replace()方法的语法...
    99+
    2023-09-13
    python
  • C++中replace()函数的作用是什么
    今天就跟大家聊聊有关C++中replace()函数的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C++编程语言中的string应用方式多样化,每一种应用方式都能帮助我们提...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作