日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
MySQLINSERTINTO語(yǔ)句的正確用法

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

成都創(chuàng)新互聯(lián)公司主要從事做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)讓胡路,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220

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

MySQLINSERT INTO SELECT語(yǔ)句:

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

INSERT INTO語(yǔ)句:

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

INSERT把新行插入到一個(gè)存在的表中,INSERTINTO... VALUES形式的語(yǔ)句基于明確指定的值插入行,MySQLINSERT INTO SELECT形式插入從其他表選擇的行,有多個(gè)值表的INSERT INTO... VALUES的形式在MySQL 3.22.5或以后版本中支持,col_name=expression語(yǔ)法在MySQL 3.22.10或以后版本中支持。

tbl_name是行應(yīng)該被插入其中的表。列名表或SET子句指出語(yǔ)句為那一列指定值。

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

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

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

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

但不能這樣:

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

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

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

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

MySQLINSERT INTO ... SELECT語(yǔ)句滿足下列條件:

查詢不能包含一個(gè)ORDER BY子句。

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

AUTO_INCREMENT列象往常一樣工作。

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

Records: 100 Duplicates: 0 Warnings: 0

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

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

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

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

把一個(gè)字符串插入到超過(guò)列的最大長(zhǎng)度的一個(gè)CHAR、VARCHAR、TEXT或BLOB列中。值被截?cái)酁榱械淖畲箝L(zhǎng)度。

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

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

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

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

以上的相關(guān)內(nèi)容就是對(duì)MySQL INSERT INTO語(yǔ)句的介紹,望你能有所收獲。


標(biāo)題名稱:MySQLINSERTINTO語(yǔ)句的正確用法
文章出自:http://www.dlmjj.cn/article/dpijoho.html