oracle中insertall的用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle中insertall的⽤法
oracle中insert all的⽤法
现在有个需求:将数据插⼊多个表中。

怎么做呢?可以使⽤insert into语句进⾏分别插⼊,但是在oracle中有⼀个更好的实现⽅式:使⽤insert all语句。

insert all语句是oracle中⽤于批量写数据的。

insert all分⼜为⽆条件插⼊和有条件插⼊。

⼀、表和数据准备
--创建表
CREATE TABLE stu(
ID NUMBER(3),
NAME VARCHAR2(30),
sex VARCHAR2(2)
);
--删除表
drop table stu;
drop table stu1;
drop table stu2;
--向stu表中插⼊数据
INSERT INTO stu(ID, NAME, sex) VALUES(1, '成都', '⼥');
INSERT INTO stu(ID, NAME, sex) VALUES(2, '深圳', '男');
INSERT INTO stu(ID, NAME, sex) VALUES(3, '上海', '⼥');
--复制表结构创建表stu1,stu2
CREATE TABLE stu1 AS SELECT t.* FROM stu t WHERE 1 = 2;
CREATE TABLE stu2 AS SELECT t.* FROM stu t WHERE 1 = 2;
--查询表
select * from stu;
select * from stu1;
select * from stu2;
⼆、insert all⽆条件插⼊
将stu表中的数据插⼊stu1和stu2表中可以这样写
insert all
into stu1 values(id,name,sex)
into stu2 values(id,name,sex)
select id,name,sex from stu;
三、insert all有条件插⼊
有条件插⼊⼜分为两种:insert all when...和insert first when...
insert all when类型
insert all
when id=1 then
into stu1 values(id,name,sex)
when id=2 then
into stu2 values(id,name,sex)
else
into stu1 values(id,name,sex)
select id,name,sex from stu;
结果如下:
insert first when 类型
insert first
when id<=2 then
into stu1 values(id,name,sex)
when id<=3 then
into stu2 values(id,name,sex)
select id,name,sex from stu;
结果如下:
四、insert all和insert first的区别
insert first是考虑先后关系的,如果有数据满⾜第⼀个when条件⼜满⾜第⼆个when条件,则执⾏第⼀个then插⼊语句,第⼆个then就不插⼊。

反之有数据不满⾜第⼀个when条件且满⾜第⼆个when条件,则数据会插⼊第⼆个条件下对应的表中,这也正是insert first与inset all的区别。

简单来说就是all只要满⾜条件,就会插⼊,这个会造成重复插⼊;first只要有⼀个满⾜条件,后⾯的条件不再判断,不会造成重复插⼊。

注意:insert all ⽆法⽀持序列插⼊,会导致两边不⼀致。

五、参考博⽂
(1)
(2)
(3)
(4)。

相关文档
最新文档