视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成
1. 基本概念
我理解的就是将一条select
语句进行了封装,封装的结果就是一个视图,在使用者看来视图就是一个表(数据来源于里面select
语句查询出来的结果),但是实际上数据并没有查出来而是在使用视图的时候在通过视图里面语句动态的再去查询
这也就是为什么网上都说视图View
是一种虚拟的表,本身不保存数据,内部封装了一条SELECT语句,数据来源于查询的一张或多张实际数据的表
视图有以下好处
- 重复利用SQL语句
- 简化SQL查询,快速取数据
- 只用知道表的部分结构
- 保护数据,根据特定授权(分配用户一定权限,安全性)
- 更改数据格式,视图可返回与底层表的格式不同的数据表,展现出来
视图和表的基本区别
- 表要占用磁盘空间,视图不需要
- 视图不能添加索引
- 使用视图可以简化查询
- 视图可以提高安全性
2. 使用
创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
# 1)OR REPLACE:表示替换已有视图
# 2)ALGORITHM:表示视图选择算法,默认算法是UNDEFINED(未定义的):MySQL自动选择要使用的算法 ;merge合并;temptable临时表
# 3)select_statement:表示select语句
# 4)[WITH [CASCADED | LOCAL] CHECK OPTION]:表示视图在更新时保证在视图的权限范围之内
# cascade是默认值,表示更新视图的时候,要满足视图和表的相关条件
# local表示更新视图的时候,要满足该视图定义的一个条件即可
# TIPS:推荐使用WHIT [CASCADED|LOCAL] CHECK OPTION选项,可以保证数据的安全性