目录
复制表
将部门 30 的所有员工信息保存在 emp30 表中
将复杂查询结果创建为表
只将 emp 表的结构复制为 empnull 表
从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
复制表
严格来说,复制表不是复制操作,而是将一个子查询的返回结果变为了一张表的形式保存
create table 表名称 as 子查询;
将部门 30 的所有员工信息保存在 emp30 表中
SQL> create table emp30 as select * from emp where empno=30;
表已创建。
as后面的子查询中返回查询结果,这个结果保存在新的数据表 emp30 中
如果现在是一个复杂查询,那么也可以将这个最终结果保存在数据表中
将复杂查询结果创建为表
select d.deptno,d.dname,temp.count,temp.avg
from dept d,(
select deptno dno,count(*) count,avg(sal) avg
from emp
group BY deptno) temp
where d.deptno=temp.dno(+) ;
把上面的复杂查询结果保存到数据表 deptstat 中
SQL> create table deptstat
2 AS
3 select d.deptno,d.dname,temp.count,temp.avg
4 from dept d,(
5 select deptno dno,count(*) count,avg(sal) avg
6 from emp
7 group BY deptno) temp
8 where d.deptno=temp.dno(+) ;
表已创建。
此时的统计查询结果保存在 deptstat 表里面
除了可以将数据保存在数据表之中,那么还可以将表结构进行复制,即不复制表内容只复制表结构
只将 emp 表的结构复制为 empnull 表
SQL> create table empnull
2 as
3 select * from emp where 1=2 ;
表已创建。
只需要设置一个绝对不可能满足的条件即可,例如上面这个例子中条件“1=2”是不能满足的,所以不会有数据,但是通过这种方法可以复制表的结构