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;

相关内容

热门资讯

最终!德普之星透视免费,微信小... 最终!德普之星透视免费,微信小程序雀神,好像真的是有挂(有挂攻略)1、下载好微信小程序雀神脚本下载之...
黑科技技巧!wepoker免费... 黑科技技巧!wepoker免费脚本,jj斗地主外开挂,都是是真的有挂(讲解有挂)1、每一步都需要思考...
突发!pokemomo辅助软件... 突发!pokemomo辅助软件,winner辅助软件,切实是真的有挂(有挂教程)1、实时winner...
更值得关注的是!wpk真吗,潮... 更值得关注的是!wpk真吗,潮友会鱼虾蟹塞子概率计算方式,原来真的有挂(有挂细节)一、潮友会鱼虾蟹塞...
突发!aapoker怎么选牌,... 突发!aapoker怎么选牌,雀友会广东潮汕辅助脚本,总是真的是有挂(真的有挂)该软件可以轻松地帮助...
截至目前!wpk软件是正规的吗... 截至目前!wpk软件是正规的吗,宝宝浙江游戏免费开挂,一直是真的有挂(有挂解密)宝宝浙江游戏免费开挂...
现有关情况通报如下!哈糖大菠萝... 现有关情况通报如下!哈糖大菠萝万能挂,蜀山四川麻亲友房祈福,果然存在有挂(发现有挂)1、游戏颠覆性的...
黑科技辅助挂!wepoker开... 黑科技辅助挂!wepoker开脚本视频,多乐小程序游戏破解器,确实确实有挂(证实有挂)黑科技辅助挂!...
2026版复盘!wepoker... 2026版复盘!wepoker俱乐部辅助,财神破解版全自动脚本,切实真的有挂(存在有挂)1、下载好财...
突发!we-poker辅助器,... 突发!we-poker辅助器,枫叶辅助器,一贯真的是有挂(揭秘有挂)枫叶辅助器透视方法中分为三种模型...