• 视图、存储过程和函数(一)


    视图

    1、什么是视图:

      视图是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生产的。

    2、视图相对于普通的表的优势主要包括以下几项:

      a、简单:使用视图的用户完全不需要关系后面对于的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集;

      b、安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单地实现;

      c、数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户对影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者对影响。

    3、操作:创建或修改视图、删除视图,以及查看视图定义。

      3.1、创建视图语法:

        CREATE [OR REPLACE] [ ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE }] 

          VIEW view_name [(column_list)] AS select_statement [WITH [ CASCADED | LOCAL] CHECK OPTION]

        eg:创建视图area_list_view,可以使用以下命令:

          CREATE OR REPLACE VIEW `area_list_view` AS

           SELECT d.id as did,d.`address`,d.area_id,a.id as aid,a.`name` FROM address d,area a WHERE d.area_id = a.id;

     

      3.2、修改视图语法:

        ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE }]

          VIEW view_name [( column_list )] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]

        eg:修改视图area_list_view,可以使用以下命令:

            ALTER VIEW `area_list_view` AS 

            SELECT d.id ,d.`address`,d.area_id,a.`name` FROM address d,area a WHERE d.area_id = a.id;

       WITH [CASCADED | LOCAL ] CHECK OPTION 决定了是否允许更新数据使记录不再满足视图的条件(一般在多视图的情况下才用到这个命令)。这个选项与Oracle数据库中的选项是类似的,其中:

          LOCAL 只要满足本视图的条件就可以更新;

          CASCADED 则必须满足所有真的该视图的所有视图的条件才可以更新。

      如果没有明确是 LOCAL 还是 CASCADED ,则默认是 CASCADED 。

       3.3、删除视图语法:

        DROP VIEW [ IF EXISTS ] view_name [, view_name ] ...[RESTRICT | CASCADE ]

        eg:删除area_list_view视图: drop view area_list_view;

       3.4、查看视图:

        1、查看视图信息的操作:

          SHOW TABLE STATUS [ FROM db_name ] [LIKE 'pattern']

          eg:查看area_list_view视图信息的操作:show table status like 'area_list_view'

      

        2、查看视图定义:

          SHOW CREATE VIEW

          eg:查看视图area_list_view的定义:show create view area_list_view  

      

  • 相关阅读:
    从程序员到项目经理(十一):每个人都是管理者
    从程序员到项目经理(十):程序员加油站 --要执着但不要固执
    CentOS 7安装KVM并创建虚拟机
    kvm安装及简单使用
    pg_ctl -- 启动、停止、重启 PostgreSQL
    Rabbitmq java
    Rabbitmq安装
    Zabbix通过SNMP监控HP Gen10服务器的硬件
    PostgreSQL忘记密码
    zabbix自动发现与监控内存和CPU使用率最高的进程
  • 原文地址:https://www.cnblogs.com/dyh2025/p/8667193.html
Copyright © 2020-2023  润新知