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;

相关内容

热门资讯

专业讨论!德扑之星真破解套路(... 专业讨论!德扑之星真破解套路(辅助挂)软件透明挂(有挂了解)-哔哩哔哩;人气非常高,ai更新快且高清...
每日必看!智星德州菠萝外挂检测... 每日必看!智星德州菠萝外挂检测(辅助挂)软件透明挂(有挂教学)-哔哩哔哩1、玩家可以在智星德州菠萝外...
透视透明挂!轰趴十三水有后台(... 轰趴十三水有后台赢率提升策略‌;透视透明挂!轰趴十三水有后台(辅助挂)软件透明挂(有挂详情)-哔哩哔...
发现玩家!德扑ai助手软件(辅... 发现玩家!德扑ai助手软件(辅助挂)透视辅助(有挂教学)-哔哩哔哩;玩家在德扑ai助手软件中需先进行...
一分钟了解!x-poker辅助... 一分钟了解!x-poker辅助软件(辅助挂)辅助透视(有挂攻略)-哔哩哔哩1、每一步都需要思考,不同...
一分钟揭秘!德州最新辅助器(辅... 一分钟揭秘!德州最新辅助器(辅助挂)透视辅助(有挂攻略)-哔哩哔哩;德州最新辅助器最新版本免费下载安...
玩家攻略推荐!德州辅助(辅助挂... 玩家攻略推荐!德州辅助(辅助挂)辅助透视(有挂了解)-哔哩哔哩是由北京得德州辅助黑科技有限公司精心研...
揭秘真相!pokernow德州... 《揭秘真相!pokernow德州(辅助挂)辅助透视(有挂介绍)-哔哩哔哩》 pokernow德州软件...
五分钟了解!德州之星辅助器(辅... 五分钟了解!德州之星辅助器(辅助挂)辅助透视(有挂透明)-哔哩哔哩1、很好的工具软件,可以解锁游戏的...
推荐一款!pokermaste... 1、推荐一款!pokermaster有外挂(辅助挂)透视辅助(有挂教学)-哔哩哔哩;详细教程。2、p...