oracle的高级知识,Oracle基础知识-高级insert话语

Oracle基础知识--高级insert语句

以scott用户下的emp,dept等几张表作为示范,sqlplus演示。

首先创建两张空e1, e2:

SQL> create table e1 as select ename, sal, hiredate from emp where 1=2;

表已创建。

SQL> create table e2 as select ename, deptno, mgr from emp where 1=2;

表已创建。

oracle向表里插入数据有很多种方法

1. insert into xxx values(xxx);

SQL> insert into e1 values('test', 2000, to_date('20111111','yyyyMMdd'));

已创建 1 行。

2. insert into xxx select xxx from xxx;

SQL> insert into e1 select ename, sal, hiredate from emp;

已创建14行。

3. 高级inert语句:将一个查询语句的结果插入到多张表中。

1). insert all

SQL> insert all

2 into e1 values(ename, sal, hiredate)

3 into e2 values(ename, deptno, mgr)

4 select * from emp;

已创建28行。

即将查询结果的每一行都插入到e1,e2表中。select * from emp 一共14行数据,所以共插入28行。

2). insert first

SQL> insert first

2 when sal > 2500 then

3 into e1 values(ename, sal, hiredate)

4 when sal >1000 then

5 into e2 values(ename, deptno, mgr)

6 select * from emp;

已创建12行。

查询结果的一行只能插入到一张表,即使两张表的条件都符合。写在前面的条件优先插入...可以继续测试一下:

SQL> delete from e1;

已删除5行。

SQL> delete from e2;

已删除7行。

SQL> insert first

2 when sal > 1000 then

3 into e1 values(ename, sal, hiredate)

4 when sal > 2000 then

5 into e2 values(ename, deptno, mgr)

6 select * from emp;

已创建12行。

SQL> select count(1) from e1;

COUNT(1)

----------

12

SQL> select count(1) from e2;

COUNT(1)

----------

0

可以看到,e2表中没有插入任何行,因为满足第二个条件的行都满足第一条件,所以都插入到e1中了。所以需要在书写条件的时候注意了...

OK~结束~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值