SQL第6/n篇(更新中)视图

作者: 粉红狐狸_dhf | 来源:发表于2020-07-28 21:06 被阅读0次

视图

1视图.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.特点:视图就可以作为表,可以嵌套使用。

2视图的好处.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语句的操作与表的操作相同,但我们一般不去操作视图。
此外,视图的更新是有限制的,只对于简单的视图可以。

以下情况是不可修改的。


3视图不能更新的情况.png

视图与表的对比

            关键字           占用的物理空间                         使用
视图    create view as        只保存了sql的逻辑,没有保存数据       insert, delete,update,select,一般只用来查询
表      create table           保存了数据                         insert,delete,update,select

相关文章

网友评论

    本文标题:SQL第6/n篇(更新中)视图

    本文链接:https://www.haomeiwen.com/subject/camqrktx.html