MySQL中insert如何使用,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、印江網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為印江等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
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會(huì)創(chuàng)建一個(gè)行,每個(gè)列都被設(shè)置為默認(rèn)值:
INSERT INTO tbl_name () VALUES();
假設(shè)worker表只有name和email,插入一條數(shù)據(jù):
insert into worker values(“tom”,”tom@yahoo.com”);
批量插入多條數(shù)據(jù):
insert into worker values(‘tom’,’tom@yahoo.com’),(‘paul’,’paul@yahoo.com’);
給出要賦值的那個(gè)列,然后再列出值的插入數(shù)據(jù):
insert into worker (name) values (‘tom’);
insert into worker (name) values (‘tom’), (‘paul’);
使用set插入數(shù)據(jù):
insert into worker set name=’tom’;
在 SET 子句中未命名的行都賦予一個(gè)缺省值,使用這種形式的 INSERT 語句不能插入多行。
一個(gè)expression可以引用在一個(gè)值表先前設(shè)置的任何列,例如
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;
--如果每一列都有數(shù)據(jù):
insert into tbl_name1 select col3,col4 from tbl_name2;
查詢不能包含一個(gè)ORDER BY子句,而且INSERT語句的目的表不能出現(xiàn)在SELECT查詢部分的FROM子句。
ON DUPLICATE KEY UPDATE
如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會(huì)導(dǎo)致在一個(gè)UNIQUE索引或PRIMARY KEY中出現(xiàn)重復(fù)值,則執(zhí)行舊行UPDATE。
--假設(shè)a,b為唯一索引,表table沒有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語句或INSERT INTO...SELECT語句,根據(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
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)表沒有被其它線程使用時(shí),此行被插入。
使用INSERT DELAYED的另一個(gè)重要的好處是,來自許多客戶端的插入被集中在一起,并被編寫入一個(gè)塊。這比執(zhí)行許多獨(dú)立的插入要快很多。
INSERT DELAYED INTO worker (name) values (‘tom’), (‘paul’);
使用DELAYED時(shí)有一些限制:
INSERT DELAYED僅適用于MyISAM, MEMORY和ARCHIVE表。對(duì)于MyISAM表,如果在數(shù)據(jù)文件的中間沒有空閑的塊,則支持同時(shí)采用SELECT和INSERT語句。在這些情況下,基本不需要對(duì)MyISAM使用INSERT DELAYED。
INSERT DELAYED應(yīng)該僅用于指定值清單的INSERT語句。服務(wù)器忽略用于INSERT DELAYED...SELECT語句的DELAYED和INSERT DELAYED...ON DUPLICATE UPDATE語句的DELAYED。
因?yàn)樵谛斜徊迦肭?,語句立刻返回,所以您不能使用LAST_INSERT_ID()來獲取AUTO_INCREMENT值。AUTO_INCREMENT值可能由語句生成。
對(duì)于SELECT語句,DELAYED行不可見,直到這些行確實(shí)被插入了為止。
DELAYED在從屬復(fù)制服務(wù)器中被忽略了,因?yàn)镈ELAYED不會(huì)在從屬服務(wù)器中產(chǎn)生與主服務(wù)器不一樣的數(shù)據(jù)。
看完上述內(nèi)容,你們掌握mysql中insert如何使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站標(biāo)題:mysql中insert如何使用
本文來源:http://www.rwnh.cn/article42/pgschc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、企業(yè)建站、網(wǎng)站建設(shè)、搜索引擎優(yōu)化、小程序開發(fā)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)