oracle中復制表和數據 && 多表插入語句


創建測試表和測試數據

  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相同的數據

這就是兩種插入方式的不同之處

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM