zoukankan      html  css  js  c++  java
  • 11 MySQL视图

    视图概述
        视图View是一种虚拟存在的表.行和列数据来自自定义视图的查询中使用的表,在使用视图时动态生成.
        视图的优势:
            简单:用户不需要关心后面对应的表的结构,关联条件和筛选条件.对用户来说事已经过滤筛选好的复合条件的结果集. -- 那应该就是相当于Java中的接口了.
            安全:使用视图的用户只能访问他们被允许查询的结果集;而表的权限管理并不能限制到某隔行某个列.
            数据独立:一旦视图的结构确定了,屏蔽表结构对用户的影响:源表增加数据列对视图没有影响;源表修改列名,可以通过修改视图来解决.
     
     
    视图操作
     
        1).创建/修改视图
            创建/修改/删除视图 都需要用相关权限.并且对于涉及的列具有SELECT权限.
     
            a.创建视图
              CREATE [OR REPLACE][ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
                VIEW view_name [(column_list)]
                AS select_statement
                [WITH [CASCADED|LOCAL] CHECK OPTION]
     
            b.修改视图
              ALTER [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
                VIEW view_name [(column_list)]
                AS select_statement
                [WITH [CASCADED | LOCAL] CHECK OPTION]
     
        注意:MySQL 视图的定义有一些限制.
                与其他数据库不同,在FROM关键字后面不能包含子查询.
                可以通过把子查询中的内容定义成一个视图,然后对该视图创建视图就可以实现类似功能.
     
            视图的可更新性与视图中查询的定义有关系.
            以下类型的视图是不可更新的.
     
                a.包含以下关键字的SQL语句:
                        聚合函数(SUM,MIN,MAX,COUNT等)
                        DISTINCT
                        GROUP BY
                        HAVING
                        UNION
                        UNION ALL
     
                b.常量视图
                c.SELECT 中 包含子查询.
                d.JOIN
                e.FROM 一个不能更新的视图
                f.WHERE子句的子查询引用了FROM子句中的表
     
            Demo:
                --包含聚合函数
                CREATE OR REPLACE VIEW payment_sum 
                AS
                    SELECT staff_id , SUM(amount)
                    FROM payment
                    GROUP BY staff_id ;
     
                --常量视图
                CREATE OR REPLACE VIEW pi AS
                    SELECT 3.141592653 as pi ;
     
                -- SELECT 中包含子查询
                CREATE VIEW city_view 
                AS
                    SELECT (SELECT city FROM city WHERE city_id = 1 ) ;
     
     
        WITH [CASCADED|LOCAL] CHECK OPTION 决定了 是否允许更新数据 使得记录不再满足视图条件. 
        其中,LOCAL 是只要满足本视图条件就可以更新;CASCADED则是必须满足所有针对盖世兔的所有视图条件才可以更新. 如果没有明确指定,默认是CASCADED.
     
        2).删除视图
            可以一次性删除一个或者多个视图,前提是有该视图的DROP权限.
            DROP VIEW [IF EXISTS] view_name [,view_name1,..,view_nameN] [RESTRICE | CASCADE]
     
        3).查看视图
            从MySQL5.1开始,不存在SHOW VIEWS 命令,统一使用SHOW TABLES命令.SHOW TABLE STATUS 命令同理,也会显示视图的信息.
            SHOW TABLE STATUS [FROM db_name] [LIKE 'patter'] ;
     
           查看视图定义
            SHOW CREATE VIEW view_name ;
     
           通过查看系统表information_schema.views 也可以查看视图相关信息.
  • 相关阅读:
    汇编结合vc6的使用
    QT textbroswer textedite Qlist的常用的操作函数
    QT Qdialog的对话框模式以及其关闭
    QT生成的exe在其他电脑打开
    c++实现服务器和多个客户端的实时群聊通信
    c++ 实时通信系统(基础知识TCP/IP篇)
    c++的并发操作(多线程)
    六种Socket I/O模型幽默讲解
    c++字符串的输入
    字符串 与其他数据类型的转换,以及字符创的常用操作
  • 原文地址:https://www.cnblogs.com/lmxxlm-123/p/11132054.html
Copyright © 2011-2022 走看看