MySQL视图

MySQL视图

1、定义

从一个或多个表中导出指定的属性,组成一张虚拟的新表。视图可以在已有视图的基础上定义,也可以在已有表的基础上定义。

 

2、优点

a) 增加数据安全性(视图只能进行查询、修改操作)。

b) 提高逻辑独立性(如原表中,增加一列,不会影响对视图的操作)。

c) 简化查询、修改条件。

 

3、创建视图

CREATE [ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE }]

VIEW 视图名 [(属性别名清单)]

AS SELECT [ * | 属性清单 ] FROM 表名

[WITH [CASCADED|LOCAL] CHECK OPTION];

 

[ALGORITHM = { UNDEFINED | MERGE | TEMPABLE }]:选择视图的算法

UNDEFINED:未定义算法,由MySQL自动选择

MERGE:合并视图的语句和定义

TEMPTABLE:把视图的结果存入一个临时的表中

 

[(属性清单)]:视图中各个属性的名称(默认与原表(或视图)相同)

 

SELECT语句:从表中筛选出合适的记录导入视图中

 

[WITH [CASCADED|LOCAL] CHECK OPTION]:更新视图时的约束条件

CASCADED:同时满足视图和表的约束条件

LOCAL:只满足表的约束条件

 

注:创建视图时,需要有CREATE VIEW权限  和 SELECT 权限

SELECT Select_priv, Create_view_priv mysql.user WHERE user=’root’;

 

1:创建默认属性别名视图

CREATE ALGORITHM=UNDEFINED

VIEW view1

AS SELECT * FROM table1

WITH CASCADED CHECK OPTION;

 

2:创建自定义属性别名的视图

CREATE ALGORITHM=UNDEFINED

VIEW view1(alias1, alias2)

AS SELECT stat1 stat2 FROM table1

WITH CASCADED CHECK OPTION;

4、查看视图

DESCRIBE 视图名称;

DESC 视图名称;

 

5、查看视图(表)的属性(基本信息)

SHOW TABLE STATUS LIKE ‘<|视图>’;

 

6、查看创建视图的语句

SHOW CREATE VIEW 视图名 \G;

 

7、查看数据库中所有视图(视图列表)

SELECT * FROM information_schema.views \G;

注:所有视图定义都位于 information_schema.views表中。

 

8、修改视图1

CREATE OR REPLACE [ALGORITHM={UNDEFINE | MERGE | TEMPTABLE}]

VIEW 视图名 [(属性清单)]

AS SELECT 语句

[WITH [CASCADED|LOCAL] CHECK OPTION];

 

9、修改视图2

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

VIEW 视图名 [(属性清单)]

AS SELECT语句

[WITH [CASCADED|LOCAL] CHECK OPTION];

注:因视图本身特性,只能在表或已有视图的基础上创建视图,所以修改视图就是对已存在的视图进行二次创建,覆盖掉原视图。

 

10、更新视图

注:因视图是一个虚拟的表,所以更新视图是更新视图所对应的基本表。(通过INSTERUPDATEDELETE)语句来对视图进行操作。

 

UPDATE 视图名 SET 属性名1=‘VALUE’, 属性名2=’VALUE’,  

... ...   属性名n=’VALUE’;

 

更新视图限制条件:

包含SUM()MAX()MIN()COUNT() 函数的视图不能更新。

包含UNIONUNION ALLDESTINCTGROUP BYHAVIG关键字的视图不能更新。

包含常量的视图不能更新。

包含SELECT语句的视图不能更新。

由视图导出的视图不能更新。

总结:视图只适合查询,别用视图更新。

 

11、删除视图

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

[IF EXISTS]:判断视图是否存在,如果视图存在则删除。

视图名列表:视图名1,视图名2,视图名3 ... ... 视图名n

 

posted @ 2017-04-12 10:32  宁静淡泊  阅读(256)  评论(0编辑  收藏  举报