• Mysql(9)_视图


        1   视图是什么?

                   首先,视图是虚拟的表,是不存在的。若使用jdbc连接它,是会报错的,它本质上是sql语句

                   其次,物理表是真实存在的表,占用内存空间。视图没有实际的物理记录。而表有。

                   视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

                   如果操作视图中的数据,有的时候基表的数据也会被修改的。如果加了某些特定限制,则不会修改原表的数据,甚至不能修改视图。          

                  作用

                           1.1  简化查询,如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查询此视图即可,简化复杂查询

                           1.2  视图本质上就是一条SELECT语句,所以当访问视图时,只能访问到所对应的SELECT语句中涉及到的列,对基表中的其它列起到安全和保密的作用,可以限制数据访问。 

        2   创建视图

             对于视图emp_list_view_single而言,如果修改这个视图中的记录,那么基表的数据也随着修改

             对于视图emp_list_view而言,是无法修改视图中的数据的。修改时会报错。但是如果修改基表数据,则这张视图的数据也会变化。

             or replace   有同名的就替换掉

            要通过视图更新基本表数据,必须保证视图是可更新视图,即可以在INSET、UPDATE或DELETE等语句当中使用它们。对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系。还有一些特定的其他结构,这类结构会使得视图不可更新。

    如果视图包含下述结构中的任何一种,那么它就是不可更新的:

               (1)聚合函数;

               (2)DISTINCT关键字;

                (3)GROUP BY子句;

                (4)ORDER BY子句;

                (5)HAVING子句;

                (6)UNION运算符;

                (7)位于选择列表中的子查询;

                (8)FROM子句中包含多个表;

                (9)SELECT语句中引用了不可更新视图;

               (10)WHERE子句中的子查询,引用FROM子句中的表;

               (11)ALGORITHM 选项指定为TEMPTABLE(使用临时表总会使视图成为不可更新的)。

    use test01;
    CREATE OR REPLACE VIEW emp_list_view AS
      SELECT e.deptno,e.ename,e.hiredate,e.sal,d.deptname from emp AS  e ,dept AS d
         WHERE e.deptno =d.deptno;
    use test01;
    CREATE OR REPLACE VIEW emp_list_view_single AS
      SELECT e.deptno,e.ename,e.hiredate,e.sal from emp AS  e ;
         

     3   查看视图 ,其实和查看表的命令一样

             

    show create view emp_list_view  G;
     show table status like 'emp' G;
     show table status like 'emp_list_view' G;

     

      

        4   删除视图 

    DROP VIEW emp_list_view_single;
  • 相关阅读:
    jquery固定在顶部的导航菜单
    Google LOGO现代舞舞蹈动画
    memcached双主复制搭建工作【转】
    docker下运行的redis cluster中的从节点内存高
    修改jar包中的文件
    最全Linux应急响应技巧 【转】
    python lambda表达式简单用法【转】
    redis集群搭建及启动、停止、重启操作【转】
    shell整数与小数比较,小数之间比较的方法【转】
    Linux文件系统被占用,磁盘使用量与实际不一致【转】
  • 原文地址:https://www.cnblogs.com/sunnybowen/p/9977292.html
Copyright © 2020-2023  润新知