Oracle中實(shí)現(xiàn)一次插入多條數(shù)據(jù)詳細(xì)代碼舉例
一、需求描述
在我們實(shí)際的業(yè)務(wù)場(chǎng)景中,由于單條插入的效率很低(每次都需要數(shù)據(jù)庫(kù)資源連接關(guān)閉的開(kāi)銷(xiāo)),故需要實(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拼接查詢(xún)
采用union all拼接查詢(xún)方式實(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數(shù)據(jù)庫(kù)id自增及生成uuid問(wèn)題
這篇文章主要介紹了oracle數(shù)據(jù)庫(kù)id自增及生成uuid問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
給Oracle添加split和splitstr函數(shù)的方法
最近項(xiàng)目中有很多需要做批量操作的需求,客戶(hù)端把一組逗號(hào)分隔的ID字符串傳給數(shù)據(jù)庫(kù),存儲(chǔ)過(guò)程就需要把它們分割,然后逐個(gè)處理2012-11-11
將oracle的create語(yǔ)句更改為alter語(yǔ)句使用
本文將詳細(xì)介紹oracle的create語(yǔ)句更改為alter語(yǔ)句使,需要了解更多的朋友可以參考下2012-11-11
Oracle Scott創(chuàng)建視圖權(quán)限不足解決辦法
大家安裝了oracle數(shù)據(jù)庫(kù),按照oracle教程所說(shuō),使用scott用戶(hù)登錄,創(chuàng)建一個(gè)視圖,有沒(méi)有遇到錯(cuò)誤提示:權(quán)限不足!,今天就告訴大家如何解決!2015-10-10
Oracle 配置連接遠(yuǎn)程數(shù)據(jù)庫(kù)的教程
這篇文章主要介紹了Oracle 配置連接遠(yuǎn)程數(shù)據(jù)庫(kù)的教程,即oracle配置tnsnames.ora文件實(shí)例,感興趣的朋友一起看看吧2018-03-03
判定一個(gè)字符串是否為有效時(shí)間的函數(shù)
判定時(shí)間是否有效的函數(shù),為有效時(shí)間則返回1,不是有效時(shí)間則返回0,需要的朋友可以參考下2014-07-07
Oracle?19c數(shù)據(jù)庫(kù)卸載重裝步驟教程
許多的行業(yè)已經(jīng)開(kāi)始使用分布式數(shù)據(jù)庫(kù)的方式來(lái)解決數(shù)據(jù)存儲(chǔ)和管理的問(wèn)題,而Oracle關(guān)系型數(shù)據(jù)庫(kù)仍擁有數(shù)據(jù)庫(kù)領(lǐng)域領(lǐng)先的技術(shù),這篇文章主要給大家介紹了關(guān)于Oracle?19c數(shù)據(jù)庫(kù)卸載重裝步驟的相關(guān)資料,需要的朋友可以參考下2024-05-05

