15、视图

作者: 小母牛不生产奶 | 来源:发表于2018-10-21 13:08 被阅读1次

    视图:

            是一个封装了各种复杂查询的语句,就称为视图。


    创建视图

     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;查看视图的创建语句

    相关文章

      网友评论

        本文标题:15、视图

        本文链接:https://www.haomeiwen.com/subject/nvlbzftx.html