视图的概念
MYSQL视图是一张虚拟表,其内容由查询定义
视图的优点
- 简单化:数据所见即所得
- 安全化:用户只能查询或修改他们所能见到得到对的数据
- 逻辑独立性:可以屏蔽真实表结构变化带来的影响
视图的缺点
- 性能相对较差,从视图查询数据可能会很慢,特别是视图是基于其他视图创建的
- 修改不方便,特别是复杂的聚合视图基本无法修改
创建视图
- 示例1:基于单表创建视图
--创建视图
CREATE VIEW view1
AS SELECT id,name,gender,age,classId FROM studentInfo;
--通过视图查询
SELECT * FROM view1;
- 示例2:使用别名创建视图
--创建视图
CREATE VIEW view2(学号,姓名,性别,年龄,班级编号)
AS SELECT id,name,gender,age,classId FROM studentInfo;
--通过视图查询
SELECT * FROM view2;
- 示例3:基于多表创建视图
--创建视图
CREATE VIEW view3
AS SELECT s.name,s.gender,s.age,c.name FROM studentInfo s
INNER JOIN classInfo c
ON s.classId=c.id;
--通过视图查询
SELECT * FROM view3;
使用视图更新数据
- 示例:基于视图view4修改学生年龄
-通过视图查询
SELECT * FROM view4;
--通过view4修改学生年龄
UPDATE view4 SET age=age+1;
--查询学生表
SELECT name,age FROM studentInfo;
- WITH CHECK OPTION子句
简单视图是可更新的,因此可以更新通过视图不可见的数据,此更新使视图不一致。为确保视图的一致性,在创建或修改视图的命令的末尾加WITH CHECK OPTION子句
视图管理
- 查看定义视图代码:
SHOW CREATE VIEW viewName;
- 查看视图
视图本质上也是表,可以使用SHOW TABLES;
查看 - 修改视图
ALTER VIEW viewName;
- 删除视图
DROP VIEW viewName;