数据库优化 学习笔记
一、视图简介
1.1、什么时视图
- 通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。
- 视图是对若干张基本表的引用,是一张虚表,是查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);
- 方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
1.2、视图的出现
对于复杂的查询,往往是有多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦。
注意: 视图可以查看、删除(删除整个视图);不可进行修改、插入、删除视图的的数据(因为是个虚表,相当于是某条 select 的结果投影)。
二、视图的操作
2.1、视图定义
-- 视图名建议以 v_ 开头
-- 一般用于多表查询时, 所以名字后半部分可以是用表名来表示
-- 如 查询 students表 与 class表 连接, v_stu_cla
create view 视图名字 as select语句;
2.2、查看视图
-- 查看表会将所有的视图也列出来
show tables;
2.3、使用视图
-- 视图的用途就是查询
select * from v_stu_score;
2.4、删除视图
-- 只能删除整个视图, 不能删除视图的数据
-- drop view 视图名
drop view v_stu_score
2.5、视图的修改
有下列内容之一,视图不能做修改(限制很多, 且视图本来更多的也是为了简化复杂查询语句):
- select 子句中包含 distinct
- select 子句中包含组函数
- select 语句中包含 group by 子句
- select 语句中包含 order by 子句
- where 子句中包含相关子查询
- from 子句中包含多个表
- 如果视图中有计算列,则不能更新
- 如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做 insert 操作
2.6、视图的作用
- 提高了重用性,就像一个函数(实现某条 select 语句)
- 对数据库重构,却不影响程序的运行
- 提高了安全性能,可以对不同的用户
- 让数据更加清晰