mysql形态是什么意思_MySQL INSERT 4种形态

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关键字,将插入处理为非延迟插入,并生成er_warn_legacy_syntax_convert警告(“不再支持延迟插入”)。语句被转换为INSERT”)。DELAYED关键字计划在未来的版本中删除。

LOW_PRIORITY:

插入的执行将被延迟,直到没有其他客户端从表中读取数据。这包括在现有客户端正在读取时以及INSERT LOW_PRIORITY语句正在等待时开始读取的其他客户端。因此,对于发出INSERT LOW_PRIORITY语句的客户机,可能要等待很长时间。

LOW_PRIORITY只影响只使用表级锁的存储引擎(如MyISAM、内存和合并)。

LOW_PRIORITY通常不应该用于MyISAM表,因为这样做会禁用并发插入

HIGH_PRIORITY:

如果指定了HIGH_PRIORITY,同时服务器采用–low-priority-updates选项启动,则HIGH_PRIORITY将覆盖–low-priority-updates选项。这么做还会导 致同时进行的插入被取消。

【 low_priority_updates:如果设置为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

把一张表的字段数据导入到另一张表中,执行语句会把整个数据会打包成一个事务执行。

b03eaa4448573212721045f8a03aa651.png

注意:当从同一个表中选择和插入时,MySQL创建一个内部临时表来保存SELECT中的行,然后将这些行插入到目标表中。但是,不能使用INSERT INTO t…选择……当t是临时表时,从t开始,因为临时表不能在同一语句中被引用两次

REPLACE INTO

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,

1.如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。

2.否则,直接插入新数据。

3.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操作

4d0149911947b3f72feb99817a38c474.png

2.但对于同一个数据所有行都一样的时候replace into就不会进行更新操作。

INSERT INTO ON DUMPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE语句,并且要插入的行将导致惟一索引或主键中出现重复值,则会对旧行进行更新。但主键和唯一键同事存在的时候,选择主键。

实际验证流程如下:

cd8ff4b2d99b93c2d3fb4000596d602d.png

总结

从基本Insert延伸到另外3种方式,理解了其用法,非常重要的。通过了解,可以在实际环境中有效的利用起来,要是盲目的投入使用,就会存在性能问题。

1.在实际sysbench压测中,硬件配置比较好的情况,混合&插入模式下 mysql的单台TPS能到 1w~6w的性能。insert也是有极限的,超过这个范围的时候,会存在延迟等性能瓶颈。

2.REPLACE INTO性能中 delete insert索引页分裂可能非常严重。需要注意

3.INSERT ON DUPLICATE KEY UPDATE如果一个表定义有多个唯一键或 主键同时存在时,是不安全的,这会引发操作错误,导致数据处理错误。

4.INSERT SELECT是 表之间迁移数据的很好的方式,但需要用带索引的字段进行条件和排序限制。除此之外数据量多的时候,可以理解成一个大事务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值