正确使用MySQL INSERT INTO语句


Posted in MySQL onMay 26, 2021

以下的文章主要介绍的是MySQL INSERT INTO语句的实际用法以及MySQL INSERT INTO语句中的相关语句的介绍,MySQL INSERT INTO语句在实际应用中是经常使用到的语句,所以对其相关的内容还是多多掌握为好。

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] 
[INTO] tbl_name [(col_name,...)] 
VALUES (expression,...),(...),...


MySQLINSERT INTO SELECT语句:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] 
[INTO] tbl_name [(col_name,...)] 
SELECT ...


INSERT INTO语句:

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] 
[INTO] tbl_name 
SET col_name=expression, col_name=expression, ...

INSERT把新行插入到一个存在的表中,INSERTINTO... VALUES形式的语句基于明确指定的值插入行,MySQLINSERT INTO SELECT形式插入从其他表选择的行,有多个值表的INSERT INTO... VALUES的形式在MySQL 3.22.5或以后版本中支持,col_name=expression语法在MySQL 3.22.10或以后版本中支持。

tbl_name是行应该被插入其中的表。列名表或SET子句指出语句为那一列指定值。

如果你为INSERT ... VALUES或INSERT ... SELECT不指定列表,所有列的值必须在VALUES()表或由SELECT提供。如果你不知道表中列的顺序,使用DESCRIBE tbl_name来找出。

任何没有明确地给出值的列被设置为它的缺省值。例如,如果你指定一个列表并没命名表中所有列,未命名的列被设置为它们的缺省值。缺省值赋值在7.7 CREATE TABLE句法中描述。

一个expression可以引用在一个值表先前设置的任何列。例如,你能这样:

MySQL> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);

但不能这样:

MySQL> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);

如果你指定关键词LOW_PRIORITY,INSERT的执行被推迟到没有其他客户正在读取表。在这种情况下,客户必须等到插入语句完成后,如果表频繁使用,它可能花很长时间。这与INSERT DELAYED让客马上继续正好相反。

如果你在一个有许多值行的INSERT中指定关键词IGNORE,表中任何复制一个现有PRIMARY或UNIQUE键的行被忽略并且不被插入。如果你不指定IGNORE,插入如果有任何复制现有关键值的行被放弃。你可用C API函数MySQL_info()检查多少行被插入到表中。

如果MySQL用DONT_USE_DEFAULT_FIELDS选项配置,INSERT语句产生一个错误,除非你明确对需要一个非NULL值的所有列指定值。见4.7.3 典型configure选项。

MySQLINSERT INTO ... SELECT语句满足下列条件:

查询不能包含一个ORDER BY子句。

INSERT语句的目的表不能出现在SELECT查询部分的FROM子句,因为这在ANSI SQL中被禁止让从你正在插入的表中SELECT。(问题是SELECT将可能发现在同一个运行期间内先前被插入的记录。当使用子选择子句时,情况能很容易混淆)

AUTO_INCREMENT列象往常一样工作。

如果你使用INSERT ... SELECT或INSERT ... VALUES语句有多个值列表,你可以使用C API函数MySQL_info()得到查询的信息。信息字符串的格式如下:

Records: 100 Duplicates: 0 Warnings: 0

Duplicates指出不能被插入的行的数量,因为他们与现有的唯一的索引值重复。Warnings指出在出现某些问题时尝试插入列值的次数。在下列任何条件下都可能发生错误:

插入NULL到被声明了NOT NULL的列,列被设置为它的缺省值。

将超出列范围的值设置给一个数字列,值被剪切为范围内适当的端点值。

将数字列设成例如'10.34 a'的值,拖尾的垃圾被剥去并仍然是数字部分被插入。如果值根本不是一个数字,列被设置到0。

把一个字符串插入到超过列的最大长度的一个CHAR、VARCHAR、TEXT或BLOB列中。值被截断为列的最大长度。

把一个对列类型不合法的值插入到一个日期或时间列。列被设置为该列类型适当的“零”值。

对于INSERT语句的DELAYED选项是MySQL专属的选项-如果你客户有不能等到INSERT完成,它是很有用的。当你为日记登录使用MySQL时,而且你也周期性地运行花很长时间完成的SELECT语句,这是一个常见的问题。DELAYED在面MySQL 3.22.15中被引入,它是MySQL对 ANSI SQL92 的一个扩展。

当你使用INSERT DELAYED时,客户将马上准备好,并且当表不被任何其他的线程使用时,行将被插入。

另一个使用INSERT DELAYED的主要好处是从很多客户插入被捆绑在一起并且写进一个块。这比做很多单独的插入要来的快。

以上的相关内容就是对MySQL INSERT INTO语句的介绍,希望对大家的学习有所帮助。

MySQL 相关文章推荐
mysql查询的控制语句图文详解
Apr 11 MySQL
MySQL 数据丢失排查案例
May 08 MySQL
MySQL5.7并行复制原理及实现
Jun 03 MySQL
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 MySQL
mysql优化之query_cache_limit参数说明
Jul 01 MySQL
MySQL系列之十三 MySQL的复制
Jul 02 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
MySQL高级进阶sql语句总结大全
Mar 16 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
正确使用MySQL update语句
May 26 #MySQL
详解MySQL集群搭建
MySQL中VARCHAR与CHAR格式数据的区别
May 26 #MySQL
修改MySQL的默认密码的四种小方法
May 26 #MySQL
修改MySQL的数据库引擎为INNODB的方法
May 26 #MySQL
Mysql数据库命令大全
May 26 #MySQL
Mysql基础知识点汇总
May 26 #MySQL
You might like
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
JavaScript Split()方法
2015/12/18 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
对python的文件内注释 help注释方法
2018/05/23 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
地雷战观后感
2015/06/09 职场文书
离职证明范本
2015/06/12 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers