视图
![](https://img.haomeiwen.com/i14404889/2004e9d7e2ea9c98.png)
1.创建视图
create view 视图名 as sql查询语句
2.修改视图
法一:create or replace 视图名 as
法二:alter view 视图名 as
3.删除视图
drop view 视图1,视图2,...
ps:删除视图要有权限,root用户有所有权限,哈哈
4.查看视图结构
法一:desc 视图名
法二:show create view 视图名
ps:法二用cmd命令行看,比较全,包括创建过程,字符集之类的信息
5.特点:视图就可以作为表,可以嵌套使用。
![](https://img.haomeiwen.com/i14404889/7a26492211d59bf5.png)
-------------案例分割线------------------
案例1.查询邮箱中包含a字符的员工名,部门名和工种信息
①创建员工名,部门名和工种信息的视图
CREATE VIEW v1 AS
SELECT `last_name`,`department_name`, j.*
FROM `employees` e JOIN `departments` d
ON e.`department_id`=d.`department_id` JOIN
`jobs` j ON j.`job_id`=e.`job_id`;
②使用
SELECT * FROM v1
WHERE `last_name` LIKE '%a%';
案例2.查询各部门的平均工资级别
①创建各部门的平均工资视图
CREATE VIEW avgSalary AS
SELECT AVG(salary) ag,department_id FROM employees
GROUP BY department_id;
②使用
SELECT a.ag,g.`grade_level`
FROM avgSalary a JOIN `job_grades` g
ON a.ag BETWEEN g.`lowest_sal` AND g.`highest_sal`;
案例3.查询平均工资最低部门信息
创建视图:每个部门的平均工资 正是案例2中的avgSalary
SELECT MIN(ag) ,department_id FROM avgSalary;
#或者
SELECT ag ,department_id FROM avgSalary ORDER BY ag LIMIT 1;
案例4.查询平均工资最低的部门名和工资
SELECT ag,d.`department_name`
FROM avgSalary a JOIN `departments` d
ON a.`department_id`=d.`department_id`
ORDER BY a.`ag` LIMIT 1;
视图的更新
这里指的是修改视图里的数据,对视图的修改也会对原始数据进行修改。
insert update delete语句的操作与表的操作相同,但我们一般不去操作视图。
此外,视图的更新是有限制的,只对于简单的视图可以。
以下情况是不可修改的。
![](https://img.haomeiwen.com/i14404889/f9bd19adf9d7e52d.png)
视图与表的对比
关键字 占用的物理空间 使用
视图 create view as 只保存了sql的逻辑,没有保存数据 insert, delete,update,select,一般只用来查询
表 create table 保存了数据 insert,delete,update,select
网友评论