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

mysql insert語句操作實例講授

編輯:MySQL綜合教程

mysql insert語句操作實例講授。本站提示廣大學習愛好者:(mysql insert語句操作實例講授)文章只能為提供參考,不一定能成為您想要的結果。以下是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”,”[email protected]”);

批量拔出多條數據


insert into worker values(‘tom','[email protected]'),(‘paul','[email protected]');

給出要賦值的誰人列,然後再列出值的拔出數據


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時有一些限制:

1.INSERT DELAYED僅實用於MyISAM, MEMORY和ARCHIVE表。關於MyISAM表,假如在數據文件的中央沒有余暇的塊,則支撐同時采取SELECT和INSERT語句。在這些情形下,根本不須要對MyISAM應用INSERT DELAYED。

2.INSERT DELAYED應當僅用於指定值清單的INSERT語句。辦事器疏忽用於INSERT DELAYED...SELECT語句的DELAYED和INSERT DELAYED...ON DUPLICATE UPDATE語句的DELAYED。

3.由於外行被拔出前,語句連忙前往,所以您不克不及應用LAST_INSERT_ID()來獲得AUTO_INCREMENT值。AUTO_INCREMENT值能夠由語句生成。

4.關於SELECT語句,DELAYED行弗成見,直到這些行確切被拔出了為止。

5.DELAYED在附屬復禮服務器中被疏忽了,由於DELAYED不會在附屬辦事器中發生與主辦事器紛歧樣的數據。

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