国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

正確使用MySQL INSERT INTO語句

2020-01-18 22:46:51
字體:
供稿:網(wǎng)友

以下的文章主要介紹的是MySQL INSERT INTO語句的實(shí)際用法以及MySQL INSERT INTO語句中的相關(guān)語句的介紹,MySQL INSERT INTO語句在實(shí)際應(yīng)用中是經(jīng)常使用到的語句,所以對其相關(guān)的內(nèi)容還是多多掌握為好。

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是行應(yīng)該被插入其中的表。列名表或SET子句指出語句為那一列指定值。

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

任何沒有明確地給出值的列被設(shè)置為它的缺省值。例如,如果你指定一個列表并沒命名表中所有列,未命名的列被設(shè)置為它們的缺省值。缺省值賦值在7.7 CREATE TABLE句法中描述。

一個expression可以引用在一個值表先前設(shè)置的任何列。例如,你能這樣:

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

但不能這樣:

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

如果你指定關(guān)鍵詞LOW_PRIORITY,INSERT的執(zhí)行被推遲到?jīng)]有其他客戶正在讀取表。在這種情況下,客戶必須等到插入語句完成后,如果表頻繁使用,它可能花很長時間。這與INSERT DELAYED讓客馬上繼續(xù)正好相反。

如果你在一個有許多值行的INSERT中指定關(guān)鍵詞IGNORE,表中任何復(fù)制一個現(xiàn)有PRIMARY或UNIQUE鍵的行被忽略并且不被插入。如果你不指定IGNORE,插入如果有任何復(fù)制現(xiàn)有關(guān)鍵值的行被放棄。你可用C API函數(shù)MySQL_info()檢查多少行被插入到表中。

如果MySQL用DONT_USE_DEFAULT_FIELDS選項(xiàng)配置,INSERT語句產(chǎn)生一個錯誤,除非你明確對需要一個非NULL值的所有列指定值。見4.7.3 典型configure選項(xiàng)。

MySQLINSERT INTO ... SELECT語句滿足下列條件:

查詢不能包含一個ORDER BY子句。

INSERT語句的目的表不能出現(xiàn)在SELECT查詢部分的FROM子句,因?yàn)檫@在ANSI SQL中被禁止讓從你正在插入的表中SELECT。(問題是SELECT將可能發(fā)現(xiàn)在同一個運(yùn)行期間內(nèi)先前被插入的記錄。當(dāng)使用子選擇子句時,情況能很容易混淆)

AUTO_INCREMENT列象往常一樣工作。

如果你使用INSERT ... SELECT或INSERT ... VALUES語句有多個值列表,你可以使用C API函數(shù)MySQL_info()得到查詢的信息。信息字符串的格式如下:

Records: 100 Duplicates: 0 Warnings: 0

Duplicates指出不能被插入的行的數(shù)量,因?yàn)樗麄兣c現(xiàn)有的唯一的索引值重復(fù)。Warnings指出在出現(xiàn)某些問題時嘗試插入列值的次數(shù)。在下列任何條件下都可能發(fā)生錯誤:

插入NULL到被聲明了NOT NULL的列,列被設(shè)置為它的缺省值。

將超出列范圍的值設(shè)置給一個數(shù)字列,值被剪切為范圍內(nèi)適當(dāng)?shù)亩它c(diǎn)值。

將數(shù)字列設(shè)成例如'10.34 a'的值,拖尾的垃圾被剝?nèi)ゲ⑷匀皇菙?shù)字部分被插入。如果值根本不是一個數(shù)字,列被設(shè)置到0。

把一個字符串插入到超過列的最大長度的一個CHAR、VARCHAR、TEXT或BLOB列中。值被截斷為列的最大長度。

把一個對列類型不合法的值插入到一個日期或時間列。列被設(shè)置為該列類型適當(dāng)?shù)摹傲恪敝怠?/p>

對于INSERT語句的DELAYED選項(xiàng)是MySQL專屬的選項(xiàng)-如果你客戶有不能等到INSERT完成,它是很有用的。當(dāng)你為日記登錄使用MySQL時,而且你也周期性地運(yùn)行花很長時間完成的SELECT語句,這是一個常見的問題。DELAYED在面MySQL 3.22.15中被引入,它是MySQL對 ANSI SQL92 的一個擴(kuò)展。

當(dāng)你使用INSERT DELAYED時,客戶將馬上準(zhǔn)備好,并且當(dāng)表不被任何其他的線程使用時,行將被插入。

另一個使用INSERT DELAYED的主要好處是從很多客戶插入被捆綁在一起并且寫進(jìn)一個塊。這比做很多單獨(dú)的插入要來的快。

以上的相關(guān)內(nèi)容就是對MySQL INSERT INTO語句的介紹,希望對大家的學(xué)習(xí)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 浦县| 乌鲁木齐市| 钦州市| 江永县| 石景山区| 潞西市| 黄山市| 宽城| 太康县| 巴彦县| 宜丰县| 宁乡县| 旅游| 久治县| 深州市| 德庆县| 惠州市| 芮城县| 贡觉县| 南岸区| 临海市| 洪江市| 泽普县| 定襄县| 邳州市| 上杭县| 凉山| 贵州省| 遂宁市| 女性| 永靖县| 苗栗市| 鲁甸县| 陆良县| 深水埗区| 荆州市| 绍兴市| 屏边| 理塘县| 独山县| 祁东县|