博客源为书写的载体,书写以对思维的缓存 正文

MySQL视图


视图就是一条SELECT语句执行后返回的结果集,然后给它设置个别名,将复杂的SQL语句简化,方便日后使用同时提高查询效率。

一:视图概述

视图是一张虚拟表,其本质是根据SQL语句获取动态的数据集,并给它设置个别名。在使用时只需使用别名就可获取结果集,并可以将其当作表来操作。

二:视图的作用

1.简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。

2.安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。

3.数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

三:视图的操作

1.创建

语法:CREATE VIEW 视图名 AS SELECT语句 [WITH [CASCADED | LOCAL] CHECK OPTION];
-- WITH CHECK OPTION:表示更新视图时要保证在该视图的权限范围之内,为了保证数据的安全性
-- CASCADED:WITH CHECK OPTION的子选项(默认选项),表示更新视图时要满足所有相关视图和表的条件
-- LOCAL:WITH CHECK OPTION的子选项,表示更新视图时满足该视图本身的定义的条件即可
举例:
create view my_view as select * from Student where gender=1 with check option;
视图一旦创建完毕,就可以像一个普通表那样使用,但它本身只是张虚拟表
select name, score from my_view;

查看视图的创建语句:
show create view 视图名;

2.删除

语法:DROP VIEW [IF EXISTS] 视图名;

3.修改

语法:ALTER VIEW 视图名 AS SELECT语句 [WITH [CASCADED | LOCAL] CHECK OPTION];

四:总结

视图是把双刃剑,合理使用能够给我们在查询操作时带来很大的便利,但是过度依赖视图也会存在性能降低的问题。本篇只是做了个简单的了解视图,更多详情可参考:https://www.cnblogs.com/geaozhang/p/6792369.html#chakanshitu

五:最后

losehair.jpg