视图
视图是一种根据查询(也就是select语句)定义的数据库对象,用于获取想要看到和使用的局部数据
视图有时也被称为“虚拟表”
视图的作用
- 方便重用SQL语句
- 保护数据,隐藏表的实现细节
- 对不同用户显示不同的内容
一般,应该将视图用于select语句,而不用于DML
1、视图操作
#创建视图
create view v_dept_emp as select e.*,d.dname,d.loc from emp e join dept d on e.deptno=d.deptno and e.deptno=20;
#修改视图
alter view v_dept_emp as select e.*,d.dname,d.loc from emp e join dept d on e.deptno=d.deptno and e.deptno=10;
#删除视图
drop view if exists v_dept_emp;
2、简化复杂连结
#创建三张表连结的一个视图,可重用性高的视图
create view v_emp_dept_grade as
select e.*,d.dname,d.loc,s.grade
from emp e join dept d on e.deptno=d.deptno
join salgrade s on e.sal between losal and hisal;
#查出编号是7369的员工的所有信息,包括部门名,工资等级
select * from v_emp_dept_grade where empno=7369;
3、重新格式化检索数据
#将部门与驻地连接起来
create view department as select concat(dname,'--',loc) as depart from v_emp_dept_grade;
select * from department;
4、过滤不想要的数据
#过滤出津贴不为空的记录
create view v_comm as select * from emp where comm is not null;
select * from v_comm;
5、复用计算字段
#计算出年薪,并形成一张可复用的视图
create view v_sal as select ename,sal,comm,(sal+ifnull(comm,0))*12 as yearsal from emp;
select * from v_sal where ename='simith';