正确使用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 全文检索的使用示例
Jun 07 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
Oct 16 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
MySQL数据库索引的最左匹配原则
Nov 20 MySQL
mysql下的max_allowed_packet参数设置详解
Feb 12 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
mysql的单列多值存储实例详解
Apr 05 MySQL
mysql5.5中文乱码问题解决的有用方法
May 30 MySQL
MySQL索引失效十种场景与优化方案
May 08 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
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
php显示时间常用方法小结
2015/06/05 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
flask中过滤器的使用详解
2018/08/01 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
咖啡厅创业计划书范本
2014/01/22 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
大学开学计划书
2014/04/30 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
教师见习总结范文
2015/06/23 职场文书
JavaScript获取URL参数的方法分享
2022/04/07 Javascript