正確使用MySQL INSERT INTO語句
以下的文章主要介紹的是MySQL INSERT INTO語句的實(shí)際用法以及MySQL INSERT INTO語句中的相關(guān)語句的介紹,MySQL INSERT INTO語句在實(shí)際應(yīng)用中是經(jīng)常使用到的語句,所以對(duì)其相關(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把新行插入到一個(gè)存在的表中,INSERTINTO... VALUES形式的語句基于明確指定的值插入行,MySQLINSERT INTO SELECT形式插入從其他表選擇的行,有多個(gè)值表的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è)置為它的缺省值。例如,如果你指定一個(gè)列表并沒命名表中所有列,未命名的列被設(shè)置為它們的缺省值。缺省值賦值在7.7 CREATE TABLE句法中描述。
一個(gè)expression可以引用在一個(gè)值表先前設(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)]有其他客戶正在讀取表。在這種情況下,客戶必須等到插入語句完成后,如果表頻繁使用,它可能花很長(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語句產(chǎn)生一個(gè)錯(cuò)誤,除非你明確對(duì)需要一個(gè)非NULL值的所有列指定值。見4.7.3 典型configure選項(xiàng)。
MySQLINSERT INTO ... SELECT語句滿足下列條件:
查詢不能包含一個(gè)ORDER BY子句。
INSERT語句的目的表不能出現(xiàn)在SELECT查詢部分的FROM子句,因?yàn)檫@在ANSI SQL中被禁止讓從你正在插入的表中SELECT。(問題是SELECT將可能發(fā)現(xiàn)在同一個(gè)運(yùn)行期間內(nèi)先前被插入的記錄。當(dāng)使用子選擇子句時(shí),情況能很容易混淆)
AUTO_INCREMENT列象往常一樣工作。
如果你使用INSERT ... SELECT或INSERT ... VALUES語句有多個(gè)值列表,你可以使用C API函數(shù)MySQL_info()得到查詢的信息。信息字符串的格式如下:
Records: 100 Duplicates: 0 Warnings: 0
Duplicates指出不能被插入的行的數(shù)量,因?yàn)樗麄兣c現(xiàn)有的唯一的索引值重復(fù)。Warnings指出在出現(xià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è)字符串插入到超過列的最大長(zhǎng)度的一個(gè)CHAR、VARCHAR、TEXT或BLOB列中。值被截?cái)酁榱械淖畲箝L(zhǎng)度。
把一個(gè)對(duì)列類型不合法的值插入到一個(gè)日期或時(shí)間列。列被設(shè)置為該列類型適當(dāng)?shù)摹傲恪敝怠?/p>
對(duì)于INSERT語句的DELAYED選項(xiàng)是MySQL專屬的選項(xiàng)-如果你客戶有不能等到INSERT完成,它是很有用的。當(dāng)你為日記登錄使用MySQL時(shí),而且你也周期性地運(yùn)行花很長(zhǎng)時(shí)間完成的SELECT語句,這是一個(gè)常見的問題。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ú)的插入要來的快。
以上的相關(guān)內(nèi)容就是對(duì)MySQL INSERT INTO語句的介紹,希望對(duì)大家的學(xué)習(xí)有所幫助。
- Mysql插入數(shù)據(jù)方式(insert into 、replace into解析)
- mysql使用insert into select插入查出的數(shù)據(jù)
- MySQL INSERT INTO SELECT時(shí)自增Id不連續(xù)問題及解決
- mysql插入數(shù)據(jù)INSERT INTO SET的優(yōu)勢(shì)
- MySql中使用INSERT INTO語句更新多條數(shù)據(jù)的例子
- 解析MySQL中INSERT INTO SELECT的使用
- MySQL 關(guān)于表復(fù)制 insert into 語法的詳細(xì)介紹
- MySQL中INSERT INTO的具體使用
相關(guān)文章
JDBC連接mysql8和mysql5.7的注意事項(xiàng)
這篇文章主要介紹了JDBC連接mysql8和mysql5.7的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Mysql數(shù)據(jù)庫索引面試題(程序員基礎(chǔ)技能)
索引是Mysql的一塊硬骨頭,但是對(duì)于程序猿來說又是十分重要的基礎(chǔ)技能。本文將從索引原理、索引設(shè)計(jì)原則方面闡述Mysql索引,相信通過本文的學(xué)習(xí)你將完美征服阿里面試官2021-05-05Mysql數(shù)據(jù)庫從5.6.28版本升到8.0.11版本部署項(xiàng)目時(shí)遇到的問題及解決方法
這篇文章主要介紹了Mysql數(shù)據(jù)庫從5.6.28版本升到8.0.11版本過程中遇到的問題及解決方法,解決辦法有三種,每種方法給大家介紹的都很詳細(xì),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05Mysql 根據(jù)一個(gè)表數(shù)據(jù)更新另一個(gè)表的某些字段(sql語句)
這篇文章主要介紹了Mysql 根據(jù)一個(gè)表數(shù)據(jù)更新另一個(gè)表的某些字段,本文給出了sql語句,感興趣的朋友可以跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05銀河麒麟V10安裝MySQL8.0.28并實(shí)現(xiàn)遠(yuǎn)程訪問
這篇文章主要介紹了銀河麒麟V10安裝MySQL8028的圖文教程,并詳細(xì)介紹了遠(yuǎn)程訪問的實(shí)現(xiàn)方法,本文通過圖文命令給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02