加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql中4种常见的插入方式

发布时间:2023-01-05 08:30:54 所属栏目:MySql教程 来源:未知
导读: 4种常见insert方式
准备工作
CREATE TABLE `identity_table` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`identity_id` int(11) DEFAULT NULL COMMENT '身

4种常见insert方式

准备工作

CREATE TABLE `identity_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `identity_id` int(11) DEFAULT NULL COMMENT '身份Id',
  `name` varchar(255) DEFAULT NULL COMMENT '姓名',
  PRIMARY KEY (`id`),
  UNIQUE KEY `identity_idx` (`identity_id`) COMMENT '身份id唯一索引'
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

1、insert into

最常用的插入方式,该命令在执行数据插入操作时,会在当前表中对主键或unique索引进行检测,若没有存在,则执行插入动作,若存在主键相同或unique索引相同的数据MySQL 插入数据,执行会报错。

在这里插入图片描述

当重复插入唯一索引的值时

在这里插入图片描述

2、insert ignore into

主要作用:用来排除数据重复的。

会忽略数据库中已经存在的记录,如果表中存在主键或unique索引相同的数据不在插入该条数据,反之则插入(存在则忽略,反之插入)这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

在这里插入图片描述

3、replace into

如果表中存在与主键或unique索引相同的数据,则替换掉该主键或unique索引的记录,反之则插入。 在替换掉元素时相当于删除之前的插入最新的,相当于执行了两条sql。所以说替换掉元素时递增主键之前和之后是有区别的。

在这里插入图片描述

4、insert into *** on duplicate key update

一句话概括:当insert已存在的记录时执行update

(与replace into的区别在于:replace是完全替换成新的数据记录,此处是修改不同的地方,新纪录中没有的部分依然采用老记录中的数据。)

在这里插入图片描述

可以看到受影响行为2行,这是因为这是将原有记录进行修改了,而不是插入执行。

当我们插入多条数据时有的存在有的不存在那么该如何执行呢?

insert into identity_table
	(identity_id,`name`)
values
	(110,'张三'), # 重复项
	(222,'李四')  # 非重复项
on duplicate key update
	`name`='王武'

在这里插入图片描述

可以看到在执行重复的记录时进行了update,在执行没有重复的记录时进行了插入。

on duplicate key update 后不只是跟固定值 也可以动态的传参

insert into identity_table
	(identity_id,`name`)
values
	(110,'刘麻子'), # 重复项
	(222,'王嘎子'), # 重复项
	(333,'哈拉子') # 非重复项
on duplicate key update
	`name`=values(`name`)

在这里插入图片描述

可以看到name列被动态的修改,在开发需求中,这样插入连事物都省的做。

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!