(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]

视图名用逗号隔开

posted @ 2017-11-05 10:48  ikonon  阅读(262)  评论(0编辑  收藏  举报
levels of contents