MySQL INSERT 有哪4种形态? mysql+insert+有哪4种形态?举例说明
wptr33 2024-11-08 15:02 28 浏览
INSERT语句是最常见的SQL语句之一,MySQL中INSERT有其他形态的插入数据方式。下面了解一下mysql中常用的四种插入数据的语句:
INSERT INTO
1.insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错;除了这个之外还有一些配合的参数.
语法如下:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
{VALUES | VALUE} (value_list) [, (value_list)] ...
[ON DUPLICATE KEY UPDATE assignment_list]
- DELAYED:是立刻返回一个标识,告诉上层程序,数据已经插入了,当表没有被其它线程使用时,此行被插入,真实插入时间就不可控了。所以这样的写法对数据的安全性是没有保障的。 延迟插入和替换在MySQL 5.6中是不推荐的。在MySQL 5.7,MySQL 8.0中,不支持延迟。服务器识别但忽略DELAYED关键字,将插入处理为非延迟插入,并生成erwarnlegacysyntaxconvert警告(“不再支持延迟插入”)。语句被转换为INSERT”)。DELAYED关键字计划在未来的版本中删除。
- LOW_PRIORITY:插入的执行将被延迟,直到没有其他客户端从表中读取数据。这包括在现有客户端正在读取时以及INSERT LOWPRIORITY语句正在等待时开始读取的其他客户端。因此,对于发出INSERT LOWPRIORITY语句的客户机,可能要等待很长时间。 LOWPRIORITY只影响只使用表级锁的存储引擎(如MyISAM、内存和合并)。 LOWPRIORITY通常不应该用于MyISAM表,因为这样做会禁用并发插入
- HIGH_PRIORITY:如果指定了HIGHPRIORITY,同时服务器采用–low-priority-updates选项启动,则HIGHPRIORITY将覆盖–low-priority-updates选项。这么做还会导 致同时进行的插入被取消。 【 lowpriorityupdates:如果设置为1,所有插入、更新、删除和锁表写语句都将等待,直到受影响的表上没有未决的选择或锁表读取。使用{INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY…仅降低一个查询的优先级。这个变量只影响只使用表级锁的存储引擎(如MyISAM、MEMORY和MERGE)mysql的merge引擎类型允许把许多结构相同的表合并为一个表,Merge表有点类似于视图。】
- IGNORE:insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据,主键和唯一键为基准;
mysql> insert ignore tinsert(id,name) values(3,'D');
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+---------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------+
| Warning | 1062 | Duplicate entry '3' for key 'PRIMARY' |
+---------+------+---------------------------------------+
INSERT INTO SELECT
把一张表的字段数据导入到另一张表中,执行语句会把整个数据会打包成一个事务执行。
注意:当从同一个表中选择和插入时,MySQL创建一个内部临时表来保存SELECT中的行,然后将这些行插入到目标表中。但是,不能使用INSERT INTO t…选择……当t是临时表时,从t开始,因为临时表不能在同一语句中被引用两次
REPLACE INTO
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,
- 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;
- 否则,直接插入新数据;
- REPLACE,您必须同时拥有表的INSERT,UPDATE,DELETE权限。
语法:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
{VALUES | VALUE} (value_list) [, (value_list)] ...
注意:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
1.下面看看binlog 解析:主键和唯一键同事存在的时候语句不一样。
主键:是进行update操作。
主键+唯一键:delete+insert操作
2.但对于同一个数据所有行都一样的时候replace into就不会进行更新操作。
INSERT INTO ON DUMPLICATE KEY UPDATE
...
? 接下来内容请访问原文(https://www.modb.pro/db/28662?YYF)进行查看~
更多数据库相关内容,可访问墨天轮(https://www.modb.pro/?YYF)进行浏览。
相关推荐
- Linux命令学习——nl命令(linux ln命令的使用)
-
nl命令主要功能为每一个文件添加行号,每一个输入的文件添加行号后发送到标准输出。当没有文件或文件为-时,读取标准输入...
- linux实例之创建service服务(linux服务器创建用户)
-
前面我们讲过可以通过service命令来启动,重启,停止指定的服务程序。service服务可以在系统启动时,自动运行该服务,我们可以利用这一特点,创建service文件,并且让系统重启时,自动执行命令...
- Linux软链接的创建、删除、修改使用入门
-
命令ln的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s。具体用法是:ln-s源文件目标文件。...
- 人生中的第一个Java程序:HelloWorld
-
任务1.编写HelloWorld程序2.尽可能的理解程序3.编译源文件4.运行程序复制代码我们已经做好了足够的准备,现在可以编写我们人生中的第一个Java程序了。有米有一种跃跃欲试的赶脚。。。...
- Linux-常用操作命令介绍(linux常用命令及用法)
-
1.帮助命令1.1help命令...
- linux实例之设置时区的方式有哪些
-
linux系统下的时间管理是一个复杂但精细的功能,而时区又是时间管理非常重要的一个辅助功能。时区解决了本地时间和UTC时间的差异,从而确保了linux系统下时间戳和时间的准确性和一致性。比如文件的时间...
- find实用命令整理(find命令prune)
-
一exec和args结合find命令区别find和exec、xargs搭配使用也是有区别的:1、execfind将匹配到的文件传给exec执行,每找到一次传一次,但是如果文件名很多...
- LINUX基础命令详解(linux13个基础命令)
-
一、复制文件目录...
- Linux命令那么多,其实只需要记住这些就足够了!
-
你好,这里是网络技术联盟站,我是瑞哥。Linux命令行是一个强大且灵活的工具,可以极大地提高用户的工作效率和系统管理能力。我们都知道,Linux命令非常多,但是在实际的工作中,日常使用到的命令并不多,...
- Linux文件操作高频使用命令(linux常用文件命令全集)
-
0.新建操作:mkdirabc#新建一个文件夹touchabc.sh#新建一个文件1.查看操作...
- Linux 命令总结,建议收藏(linux命令基础知识)
-
今天,给小伙伴们带来一篇Linux命令总结的非常全的文章,也是我们平时工作中使用率非常高的操作命令,命令有点多,建议小伙伴们可以先收藏后阅读。...
- 超详细!Linux文件和目录的10项属性
-
公众号:老油条IT记文件和目录10项属性目录1:索引节点:inode2:文件类型3:链接数4:用户5:组6:文件大小7.8.9:时间戳10:文件名...
- 设计模式-命令模式(命令设计模式使用场景)
-
写在前面Hello,我是易元,这篇文章是我学习设计模式时的笔记和心得体会。如果其中有错误,欢迎大家留言指正!一、什么是命令模式?...
- linux ln命令链接相关功能及软连接、硬链接相关操作
-
ln命令用于创建链接(链接文件或目录)。下面是ln命令的详细信息和选项说明:选项说明:-s,--symbolic:创建符号链接(软链接)。...
- Linux ln、unlink命令用法(linux unlink函数)
-
ln命令可以用来创建软链接或硬链接。1.创建软链接:ln-s源文件目标文件例如:ln-s/usr/lib/libc.so/usr/local/lib/libc.so.6这样就创建了一...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)