临时表:临时存储数据的表格,数据暂时放在这个表格中,等会会自动的根据什么事件消失掉,不会永久的占用你的物理磁盘的空间。
会话级临时表:
create global temporary table 表名(
列名 数据类型
)on commit preserve rows;
create global temporary table dept_tmp(
deptno number,
dname varchar2(20),
loc varchar2(20)
)on commit preserve rows;
insert into dept_tmp select * from scott.dept;
select * from dept_tmp;
重新打开plsql的对话框,dept_tmp的表格内容就清空了
事务级临时表:
create global temporary table 表名(
列名 数据类型
)on commit delete rows;
create global temporary table dept_tmp_2(
deptno number,
dname varchar2(20),
loc varchar2(20)
)on commit delete rows;
insert into dept_tmp_2 select * from scott.dept;
select * from dept_tmp_2;
如果进行了commit和rollback的操作,表格的数据都会被清空。
如果是正常的sql语句的操作,那么一般会话级的操作更多;
如果是在代码中写sql语句,那么就是事务级的临时表更多。
insert into 表名 select 语句;
将查询的结果,追加复制到表格中。
数据库的with as语句:
with 别名 as (select 语句),
别名 as (select 语句),
…
select 查询;
–查询SMITH上班的地点
with a as (select deptno from scott.emp where ename=‘SMITH’)
select loc from a join scott.dept b on a.deptno=b.deptno;