首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle基础知识-高级insert话语

2012-07-20 
Oracle基础知识--高级insert语句以scott用户下的emp,dept等几张表作为示范,sqlplus演示。?首先创建两张空e1

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)----------        12SQL> select count(1) from e2;  COUNT(1)----------         0

?

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

?

??? OK~结束~

?

热点排行