Oracle中實(shí)現(xiàn)一次插入多條數(shù)據(jù)詳細(xì)代碼舉例
一、需求描述
在我們實(shí)際的業(yè)務(wù)場(chǎng)景中,由于單條插入的效率很低(每次都需要數(shù)據(jù)庫(kù)資源連接關(guān)閉的開(kāi)銷),故需要實(shí)現(xiàn)一次性插入多條數(shù)據(jù),用以提升數(shù)據(jù)插入的效率;
如下圖是常見(jiàn)的單條插入數(shù)據(jù):
二、Oracle實(shí)現(xiàn)一次插入多條數(shù)據(jù)
我這里以grade2表為例進(jìn)行演示說(shuō)明:
2.1、union all拼接查詢
采用union all拼接查詢方式實(shí)現(xiàn)一次向同一個(gè)表中插入多條數(shù)據(jù)語(yǔ)法:
INSERT into 表名(字段名1,字段名2,字段名3,...) SELECT 值1,值2,值3,... from dual union all SELECT 值11,值21,值31,... from dual union all SELECT 值12,值22,值32,... from dual ...
示例(向同一個(gè)表同時(shí)插入6條不同內(nèi)容的數(shù)據(jù)):
INSERT into "grade2"("name","chinese","math","english") SELECT '張10',100,100,100 from dual union all SELECT '張20',101,101,101 from dual union all SELECT '張30',102,102,102 from dual union all SELECT '張40',103,103,103 from dual union all SELECT '張50',104,104,104 from dual union all SELECT '張60',105,105,105 from dual
2.2、insert all插入
采用insert all方式實(shí)現(xiàn)一次向同一個(gè)表中插入多條數(shù)據(jù)語(yǔ)法:
insert all into 表名(字段名1,字段名2,字段名3,...) VALUES(值1,值2,值3,...) into 表名(字段名1,字段名2,字段名3,...) VALUES(值11,值21,值31,...) into 表名(字段名1,字段名2,字段名3,...) VALUES(值12,值22,值32,...) ... SELECT * from dual;
示例(向同一個(gè)表同時(shí)插入6條不同內(nèi)容的數(shù)據(jù)):
insert all into "grade2"("name","chinese","math","english") VALUES('張11',100,100,100) into "grade2"("name","chinese","math","english") VALUES('張21',101,101,101) into "grade2"("name","chinese","math","english") VALUES('張31',102,102,102) into "grade2"("name","chinese","math","english") VALUES('張41',103,103,103) into "grade2"("name","chinese","math","english") VALUES('張51',104,104,104) into "grade2"("name","chinese","math","english") VALUES('張61',105,105,105) SELECT * from dual;
insert all方式實(shí)現(xiàn)一次向多個(gè)表中插入多條數(shù)據(jù)語(yǔ)法:
insert all into 表名1(字段名1,字段名2,字段名3,...) VALUES(值1,值2,值3,...) into 表名1(字段名1,字段名2,字段名3,...) VALUES(值11,值21,值31,...) into 表名1(字段名1,字段名2,字段名3,...) VALUES(值12,值22,值32,...) into 表名2(字段名1,字段名2,字段名3,...) VALUES(值1,值2,值3,...) into 表名2(字段名1,字段名2,字段名3,...) VALUES(值11,值21,值31,...) into 表名2(字段名1,字段名2,字段名3,...) VALUES(值12,值22,值32,...) into 表名3(字段名1,字段名2,字段名3,...) VALUES(值1,值2,值3,...) into 表名3(字段名1,字段名2,字段名3,...) VALUES(值11,值21,值31,...) into 表名3(字段名1,字段名2,字段名3,...) VALUES(值12,值22,值32,...) ... SELECT * from dual;
示例(向多個(gè)表同時(shí)插入6條不同內(nèi)容的數(shù)據(jù)):
insert all into "grade2"("name","chinese","math","english") VALUES('張11',100,100,100) into "grade2"("name","chinese","math","english") VALUES('張21',101,101,101) into "grade2"("name","chinese","math","english") VALUES('張31',102,102,102) into "grade"("id","name","course","score","sex","age") VALUES(11,'張11','語(yǔ)文',100,'男',26) into "grade"("id","name","course","score","sex","age") VALUES(12,'張21','數(shù)學(xué)',100,'男',26) into "grade"("id","name","course","score","sex","age") VALUES(13,'張31','英語(yǔ)',100,'男',26) SELECT * from dual;
注意:insert all語(yǔ)句里不能直接使用序列生成的值(因?yàn)榧幢忝總€(gè)into語(yǔ)句里都加上seq_test_insert.nextval也不會(huì)獲得多個(gè)值):
-- 創(chuàng)建序列 create sequence seq_test_insert minvalue 1 maxvalue 999999999999999999999999 start with 1 increment by 1 cache 20; -- 獲取下一個(gè)序列值 SELECT seq_test_insert.nextval from dual;
總結(jié)
到此這篇關(guān)于Oracle中實(shí)現(xiàn)一次插入多條數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Oracle一次插入多條數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例
這篇文章主要介紹了Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例,包含代碼實(shí)例,而且小編已經(jīng)測(cè)試過(guò)了哦,需要的朋友可以參考下2014-07-07快速查出Oracle數(shù)據(jù)庫(kù)中鎖等待的方法
這篇文章主要介紹了快速查出Oracle數(shù)據(jù)庫(kù)中鎖等待的方法,在實(shí)際開(kāi)發(fā)中很有應(yīng)用價(jià)值,需要的朋友可以參考下2014-08-08巧妙解決Oracle NClob讀寫(xiě)問(wèn)題(經(jīng)驗(yàn)分享)
下面小編就為大家?guī)?lái)一篇巧妙解決Oracle NClob讀寫(xiě)問(wèn)題(經(jīng)驗(yàn)分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10Oracle存儲(chǔ)過(guò)程新手入門教程(附學(xué)習(xí)用例)
存儲(chǔ)過(guò)程就是作為可執(zhí)行對(duì)象存放在數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)SQL命令,下面這篇文章主要給大家介紹了關(guān)于Oracle存儲(chǔ)過(guò)程新手入門教程的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03Oracle 區(qū)塊鏈表創(chuàng)建過(guò)程詳解
Oracle 區(qū)塊鏈表是一個(gè)具有防篡改功能的表,只能插入數(shù)據(jù),同時(shí)提供了表級(jí)和行級(jí)的保留期限,接下來(lái)通過(guò)本文給大家分享Oracle區(qū)塊鏈平臺(tái)的創(chuàng)建過(guò)程,感興趣的朋友一起看看吧2021-05-05Oracle數(shù)據(jù)泵的導(dǎo)入與導(dǎo)出實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)泵的導(dǎo)入與導(dǎo)出的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Oracle連續(xù)相同數(shù)據(jù)的統(tǒng)計(jì)
今天小編就為大家分享一篇關(guān)于Oracle連續(xù)相同數(shù)據(jù)的統(tǒng)計(jì),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01