MySql数据库:视图⽤法以及作⽤
⽬录
1、视图介绍
视图(View)是⼀种虚拟存在的表。视图中的数据并不在数据库中实际存在,⾏和列数据来⾃定义视图的查询中使⽤的表,并且是在使⽤视图时动态⽣成的。
通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的⼯作就落在创建这条SQL查询语句上2、创建、查询、修改、删除视图
2.1 创建视图
CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [WITH[CASCADED | LOCAL] CHECK OPTION]
2.2 查询视图
查看创建视图语句:SHOW CREATE VIEW 视图名称
exists的用法
查看视图数据:SELECT * FROM 视图名称......
2.3 修改视图
⽅式⼀:CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [WITH[CASCADED | LOCAL] CHECK OPTION]
⽅式⼆:ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [WITH[CASCADED | LOCAL] CHECK OPTION]
2.4 删除视图
DROP VIEW [IF EXISTS] 视图名称 [,视图名称]......
3、视图的检查选项
当使⽤WITH CHECK OPTION⼦句创建视图时,MySQL会通过视图检查正在更改的每个⾏,例如 插⼊、更新、删除、以及其符合视图的定义。MySQL允许基于另⼀个视图创建视图,它还会检查依赖视图中的规则以保持⼀致性。为了确定检查的范围,mysql提供了两个选项:
CASCADED 和 LOCAL ,默认值为 CASCADED。
3.1 CASCADED 检查选项
① create view v1 as select id,name from student where id <= 20
② create view v2 as select id,name from v1 where id >= 10 with cascaded check option;
③ create view v3 as select id,name from v2 where id <=15
(1)当操作v1这个视图时:由于创建视图语句①没有添加检查选项,不会检查where条件
(2)当操作v2这个视图时:由于创建视图语句② 添加了with cascaded check option 检查选项,它会检查当前操作是否满⾜v2视图中的where条件,由于v2视图依赖v1视图 ,相当于在v1视图上也加上了with cascaded check option,所以它也会检查当前操作是否满⾜v1中的where条件
(3)当操作v3这个视图时:由于创建视图语句③没有添加检查选项,不会检查where条件,但是依赖v2视图,去检查v2视图,由于创建视图语句② 添加了with cascaded check option 检查选项,它会检查当前操作是否满⾜v2中的where条件,由于v2视图依赖视图v1 ,相当于在v1视图上也加上了with cascaded check option,所以它也会检查当前操作是否满⾜v1中的where条件
3.2 LOCAL 检查选项
④ create view v4 as select id,name from student where id <= 20
⑤ create view v5 as select id,name from v4 where id >= 10 with local check option;
⑥ create view v6 as select id,name from v5 where id <=15
(1)当操作v4这个视图时:由于创建视图语句④没有添加检查选项,不会检查where条件
(2)当操作v5这个视图时:由于创建视图语句⑤ 添加了with local check option 检查选项,它会检查当前操作是否满⾜v5视图中的where条件,因为v5视图依赖v4视图 ,所以要去检查v4视图,由于v4视图没有定义检查选项,所以它不会检查当前操作是否满⾜v4中的where条件
(3)当操作v6这个视图时:由于创建视图语句⑥没有添加检查选项,不会检查where条件,但是依赖v5视图,去检查v5视图,由于创建视图语句⑤ 添加了with local check option 检查选项,它会检查当前操作是否满⾜v5视图中的where条件,因为v5视图依赖v4视图 ,所以要去检查v4视图,由于v4视图没有定义检查选项,所以它不会检查当前操作是否满⾜v4中的where条件
4、视图的更新
要使视图可更新,视图中的⾏于基础表中的⾏之间必须存在⼀对⼀的关系。如果视图包含⼀下任何⼀项,则该视图不可更新:
1. 聚合函数或窗⼝函数 (SUM()、MIN()、MAX()、COUTN()等)
2.DISTINCT
3. GROUP BY
4. HAVING
5. UNION 或者 UNION ALL
5、视图的作⽤
(1)简单
视图不仅可以简化⽤户对数据的理解,也可以简化他们的操作。那些被经常使⽤的查询可以被定义为视图,从⽽使得⽤户不必为以后的操作每次指定全部的条件。
(2)安全
数据库可以授权,但不能授权到数据库特定⾏和特定的列上。通过视图⽤户只能查询和修改他们能看到的数据
(3)数据独⽴
视图可以帮助⽤户屏蔽真实表结构变化带来的影响。(屏蔽了基表的变化对业务的影响)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论