Oracle中实现一次插入多条数据
创始人
2025-01-15 12:09:45
0

一、需求描述

        在我们实际的业务场景中,由于单条插入的效率很低(每次都需要数据库资源连接关闭的开销),故需要实现一次性插入多条数据,用以提升数据插入的效率;

如下图是常见的单条插入数据:

二、Oracle实现一次插入多条数据

我这里以grade2表为例进行演示说明:

2.1、union all拼接查询

采用union all拼接查询方式实现一次向同一个表中插入多条数据语法:

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 ...

示例(向同一个表同时插入6条不同内容的数据):

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方式实现一次向同一个表中插入多条数据语法:

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;

示例(向同一个表同时插入6条不同内容的数据):

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方式实现一次向多个表中插入多条数据语法:

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;

示例(向多个表同时插入6条不同内容的数据):

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','语文',100,'男',26) into "grade"("id","name","course","score","sex","age") VALUES(12,'张21','数学',100,'男',26) into "grade"("id","name","course","score","sex","age") VALUES(13,'张31','英语',100,'男',26) SELECT * from dual; 

 

注意:insert all语句里不能直接使用序列生成的值(因为即便每个into语句里都加上seq_test_insert.nextval也不会获得多个值):

-- 创建序列 create sequence seq_test_insert  minvalue 1 maxvalue 999999999999999999999999 start with 1 increment by 1 cache 20;  -- 获取下一个序列值 SELECT seq_test_insert.nextval from dual;

相关内容

热门资讯

第4分钟指引!微乐福建辅助器,... 第4分钟指引!微乐福建辅助器,wepoker祈福有用吗,力荐教程(一贯有挂);无需打开直接搜索加(薇...
第八分钟举措!仙桃晃晃诀窍,多... 大家好,今天小编来为大家解答仙桃晃晃诀窍这个问题咨询软件客服可以免费测试直接加微信(13670430...
第2分钟演示!蜀山四川辅助脚本... 第2分钟演示!蜀山四川辅助脚本,山西扣点免费辅助,新2026版(一贯确实有挂);无需打开直接搜索加(...
7分钟方针!打哈儿小程序辅助,... 7分钟方针!打哈儿小程序辅助,wepoker底牌透视,详细教程(原来是有挂的);亲,打哈儿小程序辅助...
第6分钟绝活儿!金虎爷科技,哥... 第6分钟绝活儿!金虎爷科技,哥哥打大a辅助工具视频,技巧教程(其实真的有挂) 【无需打开直接搜索加薇...
第9分钟大纲!雀友会潮汕麻将开... 您好:雀友会潮汕麻将开挂辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用...
第2分钟大纲!789大菠萝攻略... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
第4分钟举措!菠萝神辅助器ap... 第4分钟举措!菠萝神辅助器app,hhpoker怎么开透视,第三方教程(原来是有挂);亲,菠萝神辅助...
第五分钟演示!wepoker内... 第五分钟演示!wepoker内置辅助器,八仙竞技馆辅助器下载,大神讲解(一直有挂)>>您好:软件加1...
十分钟策略!江西微乐南昌有辅助... 十分钟策略!江西微乐南昌有辅助,兴动互娱辅助器视频,玩家教你(一直是有挂)江西微乐南昌有辅助ai黑科...