有一张表,我们希望创建一个与这个表内容差不多的另外一张表,但是我们不需要这张表里面的某些字段,我们只需要一部分字段的数据,这种需求常规情况下可以手动自己使用 create table 来创建表并书写表结构,不过有更好的方法,就是在创建一张表的时候根据某张表的结构来进行创建,也可以使用过滤条件将另外一种表的一部分数据copy过来,具体参考下面案例。


创建新表并从一张表获取数据到新表

如果你希望只拷贝一个表的字段结构,而不需要它的任何数据,那么你只需要在条件中加一个永远也不可能成立的条件就可以了。

create table emp10 as select * from emp where 1 = 2;

因为 1 永远都不可能等于 2,所以查询的结果没有任何一条数据,那么在创建新表的时候也仅参考其字段结构,而不会拷贝数据。

insert into emp10 select * from emp where deptno = 20;

上面的语句是在 emp10 表中增加数据,从 emp 表中将 deptno = 20 的数据全部复制了过去。新的表 emp10 只包含 deptno = 20 的数据,并且字段数量和类型与 emp 表一模一样。