zoukankan      html  css  js  c++  java
  • (5)视图

    一.视图简介

    含义:视图是一种虚拟的表,从数据库中的一个或者多个表中导出的表。数据并没有导出,还在原来的表中,但可以利用视图查询数据;当数据变的时候,视图查询的数据也在变。

    作用

    • 使操作简单化:想要了解什么信息就加入视图。
    • 增加数据安全性:视图只能查询修改某些数据,可以保证权限
    • 提高表的逻辑独立性:原先表的变化不会对视图造成影响

    二.创建视图

    CREATE [ALGORITHM = {UNDIFINED|MERGE|TEMPTABLE}]
           VIEW 视图名 [(属性清单)]
           AS SELECT 语句
           [WITH [CASCADED|LOCAL] CHECK OPTION];
    
    • ALGORITHM:表示视图选择的算法。
    • UNDIFINED:表示MySQL自动选择算法
    • MERGE:将使用视图的语句与视图定义合并起来,使视图定义的某一部分取代语句的对应部分
    • TEMPTABLE:将视图结果存入临时表,使用临时表执行语句
    • 视图名:要创建视图的名称
    • (属性清单):指定视图中各个属性的名词,默认与SELECT语句中查询的属性相同
    • SELECT 语句:从某个表中查询某些符合条件的记录
    • [WITH [CASCADED|LOCAL] CHECK OPTION]:表示更新视图时候要保证在该视图权限范围之内。
    • CASCADED:更新视图时,要满足所有相关视图和表的条件
    • LOCAL:更新视图时,满足视图本身定义的条件即可

    创建视图时,最好带上[WITH CASCADED CHECK OPTION],使约束更加严格,可以保证数据的安全性

    创建视图还需要先查询是否有权力创建,代码如下:

    SELECT Select_priv,Create_view_priv FROM mysql.user WHERE user='用户名'
    
    • Select_priv:表示用户是否具有select权限
    • Create_view_priv:表示用户是否具有create view权限

    三.查看视图

    1. DESCRIBE|DESC 视图名;
    2. SHOW TABLE STATUS LIKE '视图名';:因为LIKE后匹配的是字符串,所以要加上单引号
    3. SHOW CREATE VIEW 视图名;
    4. SELECT*FREOM information_schema.views;:查看所有视图信息

    四.修改视图

    CREATE OR REPLACE [ALGORITHM = {UNDIFINED|MERGE|TEMPTABLE}]
           VIEW 视图名 [(属性清单)]
           AS SELECT 语句
           [WITH [CASCADED|LOCAL] CHECK OPTION];
    

    ALTER  [ALGORITHM = {UNDIFINED|MERGE|TEMPTABLE}]
           VIEW 视图名 [(属性清单)]
           AS SELECT 语句
           [WITH [CASCADED|LOCAL] CHECK OPTION];      
    

    CREATE OR REPLACE不仅可以修改视图还可以创建视图,而ALTER只能修改,所以一般选择CREATE OR REPLACE

    五.更新视图

    通过UPDATA,INSERT,DELETE来操作表中的数据,更新视图时候,原本表中的数据也会更新

    不是所有视图都能更新,不能更新的有

    1. 视图包含SUM(),MAX(),MIN(),COUNT()等函数
    2. 包含UNION、UNION ALL、DISTINCT、GROUP BY、HAVIG等关键字
    3. 常量视图
    4. 视图SELECT包含子查询
    5. 不可更新的视图导出的视图
    6. ALGORITHM = TEMPTABLE类型
    7. 视图对应的表上存在没有默认值的列,而且该列没有包含在视图里面
    8. [WITH [CASCADED|LOCAL] CHECK OPTION];也能绝对视图的更新范围

    视图更新限制很大,更新需要谨慎

    六.删除视图

    DROP VIEW [IF EXISTS]视图名列表 [RESTRICT|CASCADE]

    视图名用逗号隔开

  • 相关阅读:
    OCP-1Z0-052-V8.02-167题
    OCP-1Z0-052-V8.02-172题
    OCP-1Z0-052-V8.02-178题
    OCP-1Z0-052-V8.02-180题
    OCP-1Z0-052-V8.02-84题
    OCP-1Z0-052-V8.02-86题
    OCP-1Z0-052-V8.02-85题
    OCP-1Z0-052-V8.02-83题
    OCP-1Z0-052-V8.02-76题
    OCP-1Z0-052-V8.02-75题
  • 原文地址:https://www.cnblogs.com/ikonon/p/7786823.html
Copyright © 2011-2022 走看看