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分钟辅助!天天手游辅助工具,好像存在有辅助脚本(有挂秘诀)1、起透看视 天天手游辅助工具辅助软件价...
7分钟辅助!微乐小程序自建房辅... 7分钟辅助!微乐小程序自建房辅助,都是有辅助方法(有人有挂)1、玩家可以在微乐小程序自建房辅助线上大...
2分钟辅助!约局吧辅助器,本来... 2分钟辅助!约局吧辅助器,本来真的有辅助插件(的确有挂)1、约局吧辅助器破解器简单,约局吧辅助器机器...
三分钟辅助!微乐自建房辅助工具... 三分钟辅助!微乐自建房辅助工具,确实有辅助挂(存在有挂)1、很好的工具软件,可以解锁游戏的微乐自建房...
8分钟辅助!巴郎新疆开挂,一直... 8分钟辅助!巴郎新疆开挂,一直有辅助工具(有挂详情)1、巴郎新疆开挂透视辅助软件激活码多个强度级别选...
五分钟辅助!温州茶苑手机辅助器... 五分钟辅助!温州茶苑手机辅助器,好像真的有辅助软件(有挂技巧)1、每一步都需要思考,不同水平的挑战温...
两分钟辅助!白金岛手游的作弊码... 两分钟辅助!白金岛手游的作弊码,其实真的是有辅助挂(有挂细节)1、白金岛手游的作弊码免费辅助多个强度...
八分钟辅助!极速暗宝辅助,一贯... 八分钟辅助!极速暗宝辅助,一贯真的有辅助技巧(有挂神器)1、许多玩家不知道极速暗宝辅助辅助怎么退出观...
一分钟辅助!创乐源辅助软件,果... 一分钟辅助!创乐源辅助软件,果然有辅助工具(有挂讲解)1、一分钟辅助!创乐源辅助软件,果然有辅助工具...
8分钟辅助!微乐自建房辅助多少... 8分钟辅助!微乐自建房辅助多少钱一个月,真是真的是有辅助工具(有挂讲解)小薇(辅助器软件下载)致您一...