創建測試表和測試數據
create table test (id number,name varchar(10));
insert into test values(1,'liufang');
insert into test values(2,'xiaozhang');
insert into test values(3,'dawei');
insert into test values(4,'laotan');
insert into test values(5,'laotan');
insert into test values(6,'laotan');
insert into test values(7,'dawei');
1、復制表和表中的數據,我們可以通過下面的語句來實現
(注:復制表不包含默認值和約束等信息,使用下面方法復制表和數據后需要重新見默認值及索引、約束信息等)
create table test2 as select * from test;
也可以待條件去復制
create table test3 as select * from test where name='laotan'
還可以先去定義表,然后再添加數據
create table test2 as select * from test where 2=1;
insert into test2 select * from test;
2、多表插入語句
先指定復制兩個測試表(指定列復制)
create table emp1 as select sequen,ename,sal from emp where 1=2;
create table emp2 as select sequen,ename,cid from emp where 1=2;
下面我們使用四種多表插入語句
a、 insert all 無條件插入
insert all
into emp1(sequen,ename,sal) values (sequen,ename,sal)
into emp2(sequen,ename,cid) values (sequen,ename,cid)
select sequen,ename,sal,cid from emp ;
insert all 有條件插入:上面是沒有加條件的,同時向表中插入數據,而且兩個表的數據條數也一致,下面是加上不同的條件插入
insert all
when sal>=2000 then
into emp1(sequen,ename,sal) values (sequen,ename,sal)
when cid in(1,2) then
into emp2(sequen,ename,cid) values (sequen,ename,cid)
select sequen,ename,sal,cid from emp ;
b、insert first插入(前面根據條件插入后是有相同的數據插入的,如果不想兩個表中數據有重復相同的可以使用insert first)
insert first
when sal>=2000 then
into emp1(sequen,ename,sal) values (sequen,ename,sal)
when cid in(1,2) then
into emp2(sequen,ename,cid) values (sequen,ename,cid)
select sequen,ename,sal,cid from emp ;
insert first 語句中,當地一個表符合條件后,的二個表就不在插入對飲的行,表emp1中不會出現和表emp2相同的數據
這就是兩種插入方式的不同之處