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、欢乐达人暗堡破解系统规律教程、欢...
避坑细节!hhpoker是内部... 避坑细节!hhpoker是内部控制吗-详细开挂透视辅助下载(有开挂工具);人气非常高,ai更新快且高...
技术分享!人海大厅脚本,闲聚大... 【福星临门,好运相随】;技术分享!人海大厅脚本,闲聚大联盟辅助,新版2025教程(有挂功能);暗藏猫...
实操分享!wepoker辅助器... 实操分享!wepoker辅助器激活码,hhpoker软件靠谱吗,可靠技巧(有挂细节);1、不需要AI...
盘点一款!微乐家乡破解版,多乐... 盘点一款!微乐家乡破解版,多乐找刺激辅助,可靠教程(有挂规律)所有人都在同一条线上,像星星一样排成一...
重大科普!wepoker私人辅... 重大科普!wepoker私人辅助器-详细开挂透视辅助神器(有开挂分析)是一款可以让一直输的玩家,快速...
一分钟揭秘!杭州都莱破解版,拱... 一分钟揭秘!杭州都莱破解版,拱趴游戏插件,曝光教程(新版有挂)是一款可以让一直输的玩家,快速成为一个...
分享认知!pokerworld... 分享认知!pokerworld辅助器,有哪些免费的wpk作弊码,必胜教程(有挂实锤);最新版2026...
分享开挂内幕!友友邳州辅助软件... 分享开挂内幕!友友邳州辅助软件下载,德友汇辅助,科技教程(有挂透明挂)1、用户打开应用后不用登录就可...
必备辅助推荐!哈糖大菠萝挂-详... 必备辅助推荐!哈糖大菠萝挂-详细开挂透视辅助工具(真是有挂);超受欢迎的哈糖大菠萝挂稳赢小游戏,经典...