視圖
視圖是一種根據(jù)查詢(也就是select語(yǔ)句)定義的數(shù)據(jù)庫(kù)對(duì)象晓避,用于獲取想要看到和使用的局部數(shù)據(jù)
視圖有時(shí)也被稱為“虛擬表”
視圖的作用
- 方便重用SQL語(yǔ)句
- 保護(hù)數(shù)據(jù)嗡综,隱藏表的實(shí)現(xiàn)細(xì)節(jié)
- 對(duì)不同用戶顯示不同的內(nèi)容
一般走诞,應(yīng)該將視圖用于select語(yǔ)句,而不用于DML
1蛤高、視圖操作
#創(chuàng)建視圖
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蚣旱、簡(jiǎn)化復(fù)雜連結(jié)
#創(chuàng)建三張表連結(jié)的一個(gè)視圖,可重用性高的視圖
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;
#查出編號(hào)是7369的員工的所有信息,包括部門名戴陡,工資等級(jí)
select * from v_emp_dept_grade where empno=7369;
3塞绿、重新格式化檢索數(shù)據(jù)
#將部門與駐地連接起來
create view department as select concat(dname,'--',loc) as depart from v_emp_dept_grade;
select * from department;
4、過濾不想要的數(shù)據(jù)
#過濾出津貼不為空的記錄
create view v_comm as select * from emp where comm is not null;
select * from v_comm;
5恤批、復(fù)用計(jì)算字段
#計(jì)算出年薪异吻,并形成一張可復(fù)用的視圖
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';