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分钟了解!多多来了有挂吗,W... 4分钟了解!多多来了有挂吗,Wpk好像有挂,新2025版(有挂揭秘)多多来了有挂吗是一种具有地方特色...
八分钟辅助挂!开心联盟牛牛外 ... 八分钟辅助挂!开心联盟牛牛外 挂多少钱,手机德州其实真的有挂,微扑克教程(有挂详情);该软件可以轻松...
三分钟攻略!白金岛放炮罚辅助器... 三分钟攻略!白金岛放炮罚辅助器,来玩app德州真是存在有挂,教你攻略(有挂软件)1、全新机制【白金岛...
8分钟攻略!哥哥跑得快有挂吗,... 8分钟攻略!哥哥跑得快有挂吗,咪咪扑克果然有挂,必赢方法(有挂教学)哥哥跑得快有挂吗辅助器中分为三种...
9分钟辅助挂!衡阳丫丫字牌有没... 9分钟辅助挂!衡阳丫丫字牌有没有外挂,wEPOKE真是是真的有挂,攻略教程(有挂解说)衡阳丫丫字牌有...
一分钟实锤!七彩全民雀神辅助,... 一分钟实锤!七彩全民雀神辅助,WepOke原来存在有挂,专业教程(有挂技巧);七彩全民雀神辅助辅助器...
7分钟普及!南通长牌辅助器,w... 7分钟普及!南通长牌辅助器,wEpOke竟然是有挂,2025新版教程(有挂细节)南通长牌辅助器辅助器...
7分钟辅助!吉祥棋牌填大坑科技... 7分钟辅助!吉祥棋牌填大坑科技有挂吗,WEPoke一直存在有挂,存在挂教程(有挂辅助挂)1、全新机制...
5分钟普及!财神13张牌的规律... 5分钟普及!财神13张牌的规律,WepokE原来是有挂,黑科技教程(有挂教学)1、打开软件启动之后找...
5分钟辅助挂!雀神微信小程序辅... 5分钟辅助挂!雀神微信小程序辅助是真的有吗,德扑竟然是有挂,安装教程(有挂脚本)暗藏猫腻,小编详细说...