视图:
也被称为虚拟的表,可以查询表中的数据,如果数据库表修改了,
不用修改前端 的代码,只需要修改视图即可
1)对于sql语句的封装
2)不在数据库中真实存在,而是引用视图时动态生成
例题疑问:
下面有employee表(含有员工编号和姓名)和office表(含有编号和部门),现在公布姓名和部门。
一、创建视图的语法格式
CREATE [ ALGORITHM={UNDEFINED | MERGE | TEMPTABLE} ]
VIEW view_name AS
SELECT column_name(s) FROM table_name
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
ALGORITHM :可选参数, 视图算法
UNDEFINED: mysql自动选择算法
MERGE:使用的视图语句与视图定义合并起来
TEMPTABLE: 结果存入临时表,然后用临时表执行语句。
view_name : 视图名称
column_name(s): 指查询的字段,也就是视图的名称
WITH CHECK OPTION:表示视图在更新时保证在视图的权限范围内
CASCADED :默认值 更新视图时要满足所有相关视图和表的条件,才进行更新
LOCAL:表示更新视图时满足该视图本身定义的条件即可更新。
(一)employee表上创建一个名称为e_view的视图
2.还可以查看这个视图结构
视图结构和employee数据表结构一致
默认情况下:由select中的列名用作视图的列名
(二)office表上创建一个名称为office_view的视图
2.视图结构
(三)在mysql中可以在两个或是两个以上的表中创建视图
解决第一个案例的问题
好处就是,通过视图很好的保护了基本表中的数据
二、查看视图的基本信息
语法
SHOW TABLE STATUS LIKE \'视图名\'
表
对比:上面就是视图和表的基本信息的区别
三、查看视图详细信息
语法
SHOW CREATE VIEW 视图名
总结
优点及缺点
优点
简单化,数据所见即所得
安全性,用户只能查询或修改他们所能见到得到的数据
逻辑独立性,可以屏蔽真实表结构变化带来的影响
缺点
性能相对较差,简单的查询也会变得稍显复杂
修改不方便,特变是复杂的聚合视图基本无法修改