以下的文章主要介绍的是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的认识是不是更上一层楼了,时时关注IT *** ,学习最新Mysql技术。
很多使用Windows 7系统的朋友都想小编反应,假如暂停使用电脑,鼠标会出现停顿现象,这是怎么回事呢 该怎么解决呢 下面就和小编一起去看下Windows 7 usb鼠标停顿的解决方法吧。 由于Windows 7系统中有一项USB选择性暂停造成的。这项设置主要为了节电,当他检测到用户没有对系统进行...
正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...
Windows 7 64位系统开机后提示"press any key to restart",无法进入系统了,具体现象如下所示: 故障分析: 故障的主要原因还是硬盘的问题,可以先检查是不是接触不良或坏了,进行修复或更换即可。 解决方法: 1、开机按F8不动到高级选项出现在松手,选“...
打开IE浏览器的时候、聊QQ的时候、玩游戏的时候… … 这到底是谁惹的祸呢? 很多人都知道Windows 7桌面特效全部开启会使系统性能降低,那到底是哪个特效导致的这一情况呢? 解决办法: 右键计算机,高级系统设置-性能-设置-关闭”任务栏和开始菜单使用动画“和”最大化和最小化动态显示窗口“...
Intel会在2015年推出Broadwell、Skylake两代14nm处理器,前者可以使用9系芯片组,Skylake升级到了LGA1151插槽,需要搭配新的100系列芯片组,但初期的Skylake-S又不能超倍频,所以今年Q2季度开始会很混杂。Skylake一代会支持DDR4,100系列芯片组升...
故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态 Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...