中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中insert如何使用

發布時間:2021-07-11 10:38:49 來源:億速云 閱讀:188 作者:Leah 欄目:數據庫

mysql中insert如何使用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

  insert的語法

  INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

  [INTO] tbl_name [(col_name,...)]

  VALUES ({expr | DEFAULT},...),(...),...

  [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

  或:

  INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

  [INTO] tbl_name

  SET col_name={expr | DEFAULT}, ...

  [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

  或:

  INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]

  [INTO] tbl_name [(col_name,...)]

  SELECT ...

  [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

  如果列清單和VALUES清單均為空清單,則INSERT會創建一個行,每個列都被設置為默認值:

  INSERT INTO tbl_name () VALUES();

  假設worker表只有name和email,插入一條數據:

  insert into worker values(“tom”,”tom@yahoo.com”);

  批量插入多條數據:

  insert into worker values(‘tom’,’tom@yahoo.com’),(‘paul’,’paul@yahoo.com’);

  給出要賦值的那個列,然后再列出值的插入數據:

  insert into worker (name) values (‘tom’);

  insert into worker (name) values (‘tom’), (‘paul’);

  使用set插入數據:

  insert into worker set name=’tom’;

  在 SET 子句中未命名的行都賦予一個缺省值,使用這種形式的 INSERT 語句不能插入多行。

  一個expression可以引用在一個值表先前設置的任何列,例如

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

  --但不能這樣:

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

  使用INSERT…SELECT語句插入從其他表選擇的行。

  insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;

  --如果每一列都有數據:

  insert into tbl_name1 select col3,col4 from tbl_name2;

  查詢不能包含一個ORDER BY子句,而且INSERT語句的目的表不能出現在SELECT查詢部分的FROM子句。

  ON DUPLICATE KEY UPDATE

  如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會導致在一個UNIQUE索引或PRIMARY KEY中出現重復值,則執行舊行UPDATE。

  --假設a,b為唯一索引,表table沒有1,2這樣的行是正常插入數據,沖突時,更新c列的值。

  INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3;

  --或者是

  INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=values(c);

  --引用其他列更新沖突的行

  INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

  向一個已定義為NOT NULL的列中插入NULL。對于一個多行INSERT語句或INSERT INTO...SELECT語句,根據列數據的類型,列被設置為隱含的默認值。對于數字類型,默認值為0;對于字符串類型,默認值為空字符串('');對于日期和時間類型,默認值為“zero”值。

  INSERT INTO...SELECT的ON DUPLICATE KEY UPDATE

  insert into tbl_name1(a,b,c)

  select col1,col2,col3 from tbl_name2

  ON DUPLICATE KEY UPDATE c=values(c);

  INSERT DELAYED

  如果您的客戶端不能等待INSERT完成,則這個選項是非常有用的,當一個客戶端使用INSERT DELAYED時,會立刻從服務器處得到一個確定。并且行被排入隊列,當表沒有被其它線程使用時,此行被插入。

  使用INSERT DELAYED的另一個重要的好處是,來自許多客戶端的插入被集中在一起,并被編寫入一個塊。這比執行許多獨立的插入要快很多。

  INSERT DELAYED INTO worker (name) values (‘tom’), (‘paul’);

  使用DELAYED時有一些限制:

  INSERT DELAYED僅適用于MyISAM, MEMORY和ARCHIVE表。對于MyISAM表,如果在數據文件的中間沒有空閑的塊,則支持同時采用SELECT和INSERT語句。在這些情況下,基本不需要對MyISAM使用INSERT DELAYED。

  INSERT DELAYED應該僅用于指定值清單的INSERT語句。服務器忽略用于INSERT DELAYED...SELECT語句的DELAYED和INSERT DELAYED...ON DUPLICATE UPDATE語句的DELAYED。

  因為在行被插入前,語句立刻返回,所以您不能使用LAST_INSERT_ID()來獲取AUTO_INCREMENT值。AUTO_INCREMENT值可能由語句生成。

  對于SELECT語句,DELAYED行不可見,直到這些行確實被插入了為止。

  DELAYED在從屬復制服務器中被忽略了,因為DELAYED不會在從屬服務器中產生與主服務器不一樣的數據。

看完上述內容,你們掌握mysql中insert如何使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东明县| 罗田县| 岑溪市| 新巴尔虎右旗| 个旧市| 赞皇县| 屏东县| 临洮县| 德保县| 阳西县| 武威市| 治县。| 逊克县| 田东县| 滦平县| 宁德市| 喀喇沁旗| 延安市| 平定县| 齐河县| 渭南市| 健康| 桐庐县| 石阡县| 晋中市| 寿光市| 周至县| 广西| 和静县| 墨江| 仲巴县| 天峨县| 宣汉县| 乐陵市| 淮阳县| 庆安县| 孝义市| 巴楚县| 沁阳市| 丰台区| 莱西市|