码迷,mamicode.com
首页 > 数据库 > 详细

oracle中复制表和数据 && 多表插入语句

时间:2015-01-17 23:20:55      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:

创建测试表和测试数据

  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相同的数据

这就是两种插入方式的不同之处

技术分享

 

oracle中复制表和数据 && 多表插入语句

标签:

原文地址:http://www.cnblogs.com/laotan/p/4231251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!