文章目录
- 前言
- 一、视图
- 1、为什么使用视图
- 2、视图的优缺点
- 1)优点
- 2)缺点
- 3、MySQL中视图的使用
- 4.使用视图更新数据
- 5.视图管理
前言
本章节的主要内容为视图和函数。
一、视图
MySQL 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
1、为什么使用视图
1)视图可以避免频繁的编写这些关联查询语句
2)起到对基表中的其他列和数据行进行安全保护
3)视图中存储了可以返回结果集的 sql 查询语句,当用在 from子句时,内部的 sql 查询语句就会被执行
2、视图的优缺点
1)优点
1.简单化,数据所见即所得;
2.安全性,用户只能查询或修改他们所能见到得到的数据;
3.逻辑独立性,可以屏蔽真实表结构变化带来的影响。
2)缺点
1.性能相对较差,从视图查询数据可能会很慢,特别是如果视图是基于其他视图创建的;
2.修改不方便,特别是复杂的聚合视图基本无法修改。
3、MySQL中视图的使用
1.基于单表创建视图:创建视图,显示学生姓名、性别、年龄和所在班级编号
代码如下:
-- 创建视图
create view view1
as select studentName,gender,age,classid from studentinfo;
-- 通过视图查询
select * from view1;
2.使用别名的视图:创建视图,显示学生姓名、性别、年龄和所在班级编号,并以中文表头显示
-- 创建视图
create view view2(姓名,性别,年龄,班级编号)
as select studentName,gender,age,classid from studentinfo;
-- 通过视图查询
select * from view2;
3.基于多表创建视图:创建视图,显示学生姓名、性别、年龄和所在班级名称
-- 创建视图
create view view3
as select studentName,gender,age,classname
from studentinfo s inner join classinfo c
on s.ClassID = c.ClassID;
-- 通过视图查询
select * from view3;
4.使用视图更新数据
1.定义视图的 SELECT 语句不能包含以下任何元素
1)聚合函数;
2)distinct 子句;
3)group by 子句;
4)having 子句
5)union 和 union all 子句;
6)外连接
注意:不建议使用基于多表创建的视图进行更新操作
5.视图管理
- 查看视图定义
show create view view1;
- 修改或替换视图
使用 alter view 替换 create view 就可以实现视图的修改操作,
还可以使用CREATE OR REPLACE VIEW 语句来创建或替换现有视图。
如果一个视图已经存在,MySQL 只会修改视图。如果视图不存在,
MySQL 将创建一个新的视图
- 删除视图
使用“drop view 视图名”命令就可以删除视图了。
以上就是今天要讲的主要内容