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

视图

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  

 

  

 

posted on 2018-03-28 23:32  我亦未曾饶岁月  阅读(3249)  评论(0编辑  收藏  举报

导航