15、视图
视图:
是一个封装了各种复杂查询的语句,就称为视图。
创建视图
CREATE VIEW视图名字(字段) AS 子查询
建立一个只包含 20 部门雇员信息的视图(雇员的编号、姓名、工资)
CREATE VIEW empv20 (empno,ename,sal)
AS
SELECT empno,ename,sal FROM emp WHEREdeptno=20 ;
例如:将之前的一个复杂语句包装成视图显示部门内最低工资比 20 部门最低工资要高的部门的编号及部门内最低工资:
SELECT deptno,MIN(sal) FROM emp
GROUP BY deptno
HAVING
MIN(sal)>(SELECT MIN(sal)
FROM emp WHERE deptno=20) ;
此时就可以将上面的复杂查询语句建立一张视图,之后查询视图即可。
高级视图
如果要创建一个同名的视图,则必须先将之前的视图删除掉,再进行创建:
DROP VIEW empv20 ;
有些时候如果先删除再创建操作会比较麻烦,所以有时候最好的方式:如果视图存在则先自动删除,之后自动创建。
CREATE OR REPLACE VIEW empv20 (deptno,msal)AS (SELECT deptno,MIN(sal) FROM emp GROUP BY deptno HAVING MIN(sal)>(SELECTMIN(sal) FROM emp WHERE deptno=20)) ;
WITH CHECK OPTION保护视图的创建规则
之前是按照部门编号建立的视图,所以不能修改部门编号:
update empv20 SETename='tom' where empno=7369 ; 可以更新,更新的是名字,成功
WITH READ ONLY(只读,不可修改)
视图最好不要轻易的修改
CREATE OR REPLACE VIEW empv20(empno,ename,sal,deptno) AS SELECT empno,ename,sal,deptno FROM emp WHEREdeptno=20 WITH READ ONLY;
现在任意的字段都不可更改,所以现在的视图是只读的。
如果视图的基表有多行查询(比如:group by,distinct)那么该视图也是只读
查看视图
Select text from user_views;查看视图的创建语句