--什么是视图

  • 视图是存放数据的一个接口,也可以说是一个虚表;
  • 视图本身不存放数据,它的数据来源于1个或几个基表(视图),或者来自用户自己定义的数据;
  • 当基表的数据发生变化,视图数据也随之变化。反之,当视图数据发生变化,基表数据也变化。

 

 --视图的作用

  • 视图可以让查询变得很清楚,使复杂的SQL语句得很简单(尤其对于多表而言)。
  • 保护数据库的重要数据,给不同的人看不同的数据。
  • 如果表变化,可以屏蔽表结构变化对用户的影响。

 

 --创建视图 

  • 语法
 
  
  1. CREATE [OR REPLACE] [ALGORITHM={MERGE|TEMPTABLE|UNDEFINED}] VIEW 视图名 [(列名)] 
  2. AS SELECT语句 [WITH [CASCADED|LOCAL]] CHECK OPTION];  

 可以通过SHOW TABLES查看视图;通过DESC 视图名 看视图的结构。

对于中间有空格的列名,可以用`(1左边的字符)括起来。

  • 视图的类型(视图一般用默认)
    • MERGE:将引用视图语句的文本和视图定义结合起来,使得视图定义的某一部分取代语句的对应部分。
    • TEMPTALBE:临时表。
    • UNDEFINED:默认的类型,功能和MERGE类似。
  • CHECK OPTION
    • WITH LOCAL CHECK OPTION 更新后的结果,也要满足本视图的条件。
    • WITH CASCADED CHECK OPTION 更新后的结果除了要满足本视图的条件,还要满足他所继承的基视图的条件,才可以更新。

具体参见:http://stark.blog.51cto.com/189176/796998

 

--视图的操作

视图的操作和表的操作一样,除了不能用子查询(视图使用子查询的方法是:使用子查询在视图基础上再创建一个视图)

 

--更改视图

 
  
  1. ALTER VIEW 视图名 AS SELECT语句; 

 

--删除视图

 
  
  1. DROP VIEW 视图名; 

 

--查询视图的创建语句

 
  
  1. show create view 视图名 \G;