--中间表 WITH tmp AS( SELECT * FROM emp) SELECT empno FROM tmp;
WITH tmp1 AS( SELECT * FROM emp), ?tmp2 AS (SELECT * FROM emp) ?SELECT t1.empno,t2.job,t2.deptno ?FROM tmp1 t1 ?JOIN tmp2 t2 ?ON t1.empno=t2.empno; --注意 1.中间表后面必须跟 SELECT 语句 2.数据库原始数据量大或计算复杂,处理时间长,把计算出的结果集放入中间表中方便下游提取,提高效率。 3.中间表是真实存在的表,同样占用存储空间,过多会导致不断扩容。 ? --临时表 会话级临时表 会话结束时,会话临时表数据被截断,即表消失; CREATE GLOBAL TEMPORARY TABLE tem?? ??? ? ---temporary临时的 (STU_ID NUMBER(5), CLASS_ID ?NUMBER(5), STU_NAME VARCHAR2(8), STU_MEMO VARCHAR2(200)) ON COMMIT PRESERVE ROWS ; SELECT * FROM tem;
事务级临时表 与事务相关,当进行事务提交或事务回滚的时候, 临时表中的数据将自行被截断,其他的内容和会话级的临时表的一致 CREATE GLOBAL TEMPORARY TABLE CLASSES (CLASS_ID NUMBER(5), CLASS_NAME VARCHAR2(8), CLASS_MEMO VARCHAR2(200)) ON COMMIT DELETE ROWS ; SELECT * FROM classes INSERT INTO classes VALUES(1001,'a','a1'); COMMIT; ROLLBACK; --注意 1.把复杂的逻辑拆分开来,用临时表储存中间结果,以方便后面的逻辑处理。 程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等 2.会话级是只有会话结束是,数据被截断,而事务级是回滚、提交,事务结束数据都会被截断。 3.占用存储空间。
--分区表,实际上是表分区 范围分区 CREATE TABLE MYEMP ( ? ? EMPNO ?NUMBER(4) ?PRIMARY KEY, ? ? ENAME VARCHAR2(10), ? ? JOB VARCHAR2(9), ? ? MGR NUMBER(4), ? ? HIREDATE DATE, ? ? SAL ?NUMBER(7,2), ? ? COMM NUMBER(7,2),? ? ? DEPTNO NUMBER(7,2) , ? ? ?CONSTRAINT EMP2_FK FOREIGN KEY(DEPTNO) REFERENCES DEPT(DEPTNO) ) PARTITION ?BY ?RANGE (HIREDATE) ( ? ? ? PARTITION ?part1 VALUES ?LESS ?THAN (TO_DATE('1981-1-1','YYYY/MM/DD')), --① ? ? ? PARTITION ?part2 VALUES ?LESS ?THAN (TO_DATE('1982-1-1','YYYY/MM/DD')), ? ? ? PARTITION ?part3 VALUES ?LESS ?THAN (TO_DATE('1983-1-1','YYYY/MM/DD')),? ? ? ? PARTITION ?part4 VALUES ?LESS ?THAN (TO_DATE('1988-1-1','YYYY/MM/DD')),? ? ? ? PARTITION ?part5 VALUES ?LESS ?THAN (MAXVALUE) ); INSERT INTO MYEMP? SELECT * FROM EMP; SELECT * FROM MYEMP ; -- SELECT * FROM myemp PARTITION (part4); --查看数据库中 该用户下的对应表的分区字段(此版本过低) SELECT * FROM Dba_Part_Key_Columns WHERE NAME='myemp' AND owner ='scott'; SELECT * FROM Dba_Part_Tables; 列表,哈希,组合 具体看SCDN收藏:https://blog.csdn.net/shayuwei/article/details/102485304?utm_source=app&app_version=4.13.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
--视图 1.可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表,具有安全性。 2.可以将复杂的查询保存为视图,屏蔽复杂性。
CREATE OR REPLACE VIEW EMPDETAIL AS SELECT EMPNO,ENAME,JOB,HIREDATE,EMP.DEPTNO,DNAME FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO [WITH READ ONLY ] ? --只读视图,不可进行DML。
SELECT * FROM EMPDETAIL UPDATE EMPDETAIL SET empno='7777' WHERE empno='7788'; ? ?
|