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;

相关内容

热门资讯

第6分钟了解!优乐麻将有挂(辅... 您好:优乐麻将有挂这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别...
黑科技辅助!德扑ai智能机器人... 黑科技辅助!德扑ai智能机器人平台安装(智能ai辅助工具)软件透明挂黑科技(固有有挂)-哔哩哔哩;一...
透视好友!wpk辅助器是真的(... 透视好友!wpk辅助器是真的(透视)底牌透视挂辅助底牌(可靠开挂辅助2025版教程)-哔哩哔哩;wp...
透视实锤!hhpoker软件安... 透视实锤!hhpoker软件安装包,广东雀神智能插件安装可测试,切实教程(讲解有挂)-哔哩哔哩1、这...
第五分钟了解!天天贵阳麻将辅牌... 第五分钟了解!天天贵阳麻将辅牌器app(辅助挂)固有是有挂(专业辅助必胜教程)-哔哩哔哩;最新版20...
黑科技辅助!德扑之星专业代打(... 黑科技辅助!德扑之星专业代打(智能ai辅助工具)软件透明挂黑科技(原来存在有挂)-哔哩哔哩;1.德扑...
透视好友房!epoker透视底... 透视好友房!epoker透视底牌(透视)底牌透视挂辅助工具(可靠开挂辅助必备教程)-哔哩哔哩;1、让...
透视存在!哈糖大菠萝万能挂,德... 透视存在!哈糖大菠萝万能挂,德扑之星插件,新2025教程(有挂解密)-哔哩哔哩1、上手简单,内置详细...
9分钟了解!哥哥跑到快微信小程... 9分钟了解!哥哥跑到快微信小程序可以能拿好牌(辅助挂)竟然真的是有挂(专业辅助解说技巧)-哔哩哔哩;...
黑科技辅助!wpkai机器人的... 黑科技辅助!wpkai机器人的打法(智能ai辅助工具)软件透明挂黑科技(最初是真的有挂)-哔哩哔哩;...