Oracle基础知识--高级insert语句
程序员文章站
2022-03-22 08:42:44
...
以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~结束~
推荐阅读
-
从Oracle数据库中读取数据自动生成INSERT语句的方法
-
从Oracle数据库中读取数据自动生成INSERT语句的方法
-
如何得到JDBC Insert 语句执行后插入Oracle 数据库记录的主键
-
Oracle DML语句(insert,update,delete) 回滚开销估算
-
Oracle 中insert into与select into两种表复制语句比较
-
Oracle DML语句(insert,update,delete) 回滚开销估算
-
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)
-
【存储过程】Merge Into语句实现Insert/Update在Oracle中的应用
-
Merge Into 语句代替Insert/Update在Oracle中的应用实战
-
Merge Into 语句代替Insert/Update在Oracle中的应用实战