程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 准確應用MySQL INSERT INTO語句

准確應用MySQL INSERT INTO語句

編輯:MySQL綜合教程

准確應用MySQL INSERT INTO語句。本站提示廣大學習愛好者:(准確應用MySQL INSERT INTO語句)文章只能為提供參考,不一定能成為您想要的結果。以下是准確應用MySQL INSERT INTO語句正文


以下的文章重要引見的是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語句的引見,願望對年夜家的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved