oracle复制表的sql,[oracle]表复制的sql语句

oracle复制表sql

可以复制表的结构,也可以复制查询结果,有的时候需要小表,这样比较方面。

使用环境: oracle 10.2 ;scott  的dept表

表结构:

SQL> desc dept; Name Type Nullable Default Comments ------ ------------ -------- ------- -------- DEPTNO NUMBER(2) DNAME VARCHAR2(14) Y LOC VARCHAR2(13) Y

表数据:

SQL> select *from dept; DEPTNO DNAME LOC ------ -------------- ------------- 50 TRAN BOSTON 60 MARKET 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 6 rows selected

常用sql的演示

--复制表结构 模板中原表名srctable 新建表名newtable

--1   复制全表结构create table newtable as select *from srctable where 1<>1;

--说明 因为1肯定不等于1 所以子查询得到是个表结构

案例:新建一个dept1和dept表结构相同的空表

SQL> create table dept1 as select *from dept where 1<>1;

Table created

SQL> select *from dept1;

DEPTNO DNAME LOC

------ -------------- -------------

--2  复制全表结构和数据create table newtable as select *from srctable;

--说明 也就是把原表的所有数据列出来,把整个表给newtable

--案例:创建一个表dept2和dept一样。

SQL> create table dept2 as select *from dept;

Table created

SQL> select *from dept2;

DEPTNO DNAME LOC

------ -------------- -------------

50 TRAN BOSTON

60 MARKET

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

6 rows selected

剩下的就只给演示代码就好了,基本是一样的。

--3 复制部分的表结构,没有数据create table newtable as select column1,..  from srctable where 1<>1;

--变化都在字段和where的语句了 找到规律很容易的

--案例

SQL>createtabledept3asselectdeptnofromdeptwhere1<>1;

Tablecreated

SQL> select*fromdept3;

DEPTNO

------

SQL> create table dept3 as select deptno from dept where 1<>1; Table created SQL> select *from dept3; DEPTNO ------

--4  复制部分表结构和相应的数据create table newtable as select column1,... from  srctable;

--和2 ,3 比较一下子就记住了。。

--案例

SQL>createtabledept4asselectdeptnofromdept;

Tablecreated

SQL> select*fromdept4;

DEPTNO

------

10

20

30

40

50

60

6 rowsselected

SQL> create table dept4 as select deptno from dept; Table created SQL> select *from dept4; DEPTNO ------ 10 20 30 40 50 60 6 rows selected

--5把查询到的结果插入到其他表中insert into table1(column1, column2, ....) select column1, column2, .... from table2;

这个要求2个表有一定的对应关系才行

案例;把刚才建立的空表dept1中插入 从dept中取得的数据

SQL>insertintodept1(deptno,dname)selectdeptno,dnamefromdept;

6 rowsinserted

SQL> select*fromdept1;

DEPTNO DNAME          LOC

------ -------------- -------------

50 TRAN

60 MARKET

10 ACCOUNTING

20 RESEARCH

30 SALES

40 OPERATIONS

6 rowsselected

SQL> insert into dept1(deptno,dname) select deptno,dname from dept; 6 rows inserted SQL> select *from dept1; DEPTNO DNAME LOC ------ -------------- ------------- 50 TRAN 60 MARKET 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS 6 rows selected

常用的也就是这种了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值