国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

mysql insert語(yǔ)句操作實(shí)例講解

2024-07-24 13:06:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了mysql insert語(yǔ)句操作實(shí)例講解,本文講解了insert的基本語(yǔ)法、批量插入多條數(shù)據(jù)、使用set插入數(shù)據(jù)、INSERT…SELECT語(yǔ)句等內(nèi)容,需要的朋友可以參考下
 
 

insert的語(yǔ)法

 

復(fù)制代碼代碼如下:

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會(huì)創(chuàng)建一個(gè)行,每個(gè)列都被設(shè)置為默認(rèn)值:

 

復(fù)制代碼代碼如下:

INSERT INTO tbl_name () VALUES();

 

假設(shè)worker表只有name和email,插入一條數(shù)據(jù)

 

復(fù)制代碼代碼如下:

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

 

批量插入多條數(shù)據(jù)

 

復(fù)制代碼代碼如下:

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

 

給出要賦值的那個(gè)列,然后再列出值的插入數(shù)據(jù)

 

復(fù)制代碼代碼如下:

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

 

使用set插入數(shù)據(jù)

 

復(fù)制代碼代碼如下:

insert into worker set name='tom';

 

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

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

 

復(fù)制代碼代碼如下:

INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
--但不能這樣
INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);

 

使用INSERT…SELECT語(yǔ)句插入從其他表選擇的行

 

復(fù)制代碼代碼如下:

insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;
--如果每一列都有數(shù)據(jù)
insert into tbl_name1 select col3,col4 from tbl_name2;

 

查詢不能包含一個(gè)ORDER BY子句,而且INSERT語(yǔ)句的目的表不能出現(xiàn)在SELECT查詢部分的FROM子句.

 ON DUPLICATE KEY UPDATE

如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會(huì)導(dǎo)致在一個(gè)UNIQUE索引或PRIMARY KEY中出現(xiàn)重復(fù)值,則執(zhí)行舊行UPDATE。

 

復(fù)制代碼代碼如下:

--假設(shè)a,b為唯一索引,表table沒(méi)有1,2這樣的行是正常插入數(shù)據(jù),沖突時(shí),更新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);
 向一個(gè)已定義為NOT NULL的列中插入NULL。對(duì)于一個(gè)多行INSERT語(yǔ)句或INSERT INTO...SELECT語(yǔ)句,根據(jù)列數(shù)據(jù)的類型,列被設(shè)置為隱含的默認(rèn)值。對(duì)于數(shù)字類型,默認(rèn)值為0;對(duì)于字符串類型,默認(rèn)值為空字符串('');對(duì)于日期和時(shí)間類型,默認(rèn)值為“zero”值。

 

INSERT INTO...SELECT的ON DUPLICATE KEY UPDATE

 

復(fù)制代碼代碼如下:

insert into tbl_name1(a,b,c) 
  select col1,col2,col3 from tbl_name2 
ON DUPLICATE KEY UPDATE c=values(c);

 

INSERT DELAYED

如果您的客戶端不能等待INSERT完成,則這個(gè)選項(xiàng)是非常有用的,當(dāng)一個(gè)客戶端使用INSERT DELAYED時(shí),會(huì)立刻從服務(wù)器處得到一個(gè)確定。并且行被排入隊(duì)列,當(dāng)表沒(méi)有被其它線程使用時(shí),此行被插入。

使用INSERT DELAYED的另一個(gè)重要的好處是,來(lái)自許多客戶端的插入被集中在一起,并被編寫入一個(gè)塊。這比執(zhí)行許多獨(dú)立的插入要快很多。

 

復(fù)制代碼代碼如下:

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

 

使用DELAYED時(shí)有一些限制:

1.INSERT DELAYED僅適用于MyISAM, MEMORY和ARCHIVE表。對(duì)于MyISAM表,如果在數(shù)據(jù)文件的中間沒(méi)有空閑的塊,則支持同時(shí)采用SELECT和INSERT語(yǔ)句。在這些情況下,基本不需要對(duì)MyISAM使用INSERT DELAYED。

2.INSERT DELAYED應(yīng)該僅用于指定值清單的INSERT語(yǔ)句。服務(wù)器忽略用于INSERT DELAYED...SELECT語(yǔ)句的DELAYED和INSERT DELAYED...ON DUPLICATE UPDATE語(yǔ)句的DELAYED。

3.因?yàn)樵谛斜徊迦肭埃Z(yǔ)句立刻返回,所以您不能使用LAST_INSERT_ID()來(lái)獲取AUTO_INCREMENT值。AUTO_INCREMENT值可能由語(yǔ)句生成。

4.對(duì)于SELECT語(yǔ)句,DELAYED行不可見(jiàn),直到這些行確實(shí)被插入了為止。

5.DELAYED在從屬?gòu)?fù)制服務(wù)器中被忽略了,因?yàn)镈ELAYED不會(huì)在從屬服務(wù)器中產(chǎn)生與主服務(wù)器不一樣的數(shù)據(jù)。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 隆尧县| 陇南市| 阿鲁科尔沁旗| 淳安县| 景洪市| 会东县| 从江县| 宝清县| 栖霞市| 临澧县| 清镇市| 社旗县| 建始县| 湟中县| 岑巩县| 武鸣县| 海阳市| 尉犁县| 合江县| 遂溪县| 临安市| 宜城市| 滦南县| 望城县| 云阳县| 阿瓦提县| 双桥区| 马关县| 区。| 新巴尔虎左旗| 邓州市| 连平县| 美姑县| 蚌埠市| 房山区| 汉川市| 汉川市| 余姚市| 乌审旗| 汾阳市| 汉川市|