什么是視圖
1.視圖是一種根據(jù)查詢(也就是SELECT表達式)定義的數(shù)據(jù)庫對象,用于獲取想要看到和使用的局部數(shù)據(jù)。
2.視圖有時也被成為“虛擬表”。
3.視圖可以被用來從常規(guī)表(稱為“基表”)或其他視圖中查詢數(shù)據(jù)。
4.相對于從基表中直接獲取數(shù)據(jù),視圖有以下好處:
●訪問數(shù)據(jù)變得簡單
●可被用來對不同用戶顯示不同的表的內(nèi)容
用來協(xié)助適配表的結(jié)構(gòu)以適應前端現(xiàn)有的應用程序。
視圖作用:
●提高檢索效率
●隱藏表的實現(xiàn)細節(jié)【面向視圖檢索】
創(chuàng)建視圖
如下示例:查詢員工的姓名,部門,工資入職信息等信息。
select ename,dname,sal,hiredate,e.deptno from emp e,dept d where e.deptno
= e.deptno and e.deptno = 10;
為什么使用視圖?因為需求決定以上語句需要在多個地方使用,如果頻繁的拷貝以上代碼,會給維護帶來成本,視圖可以解決這個問題。
create view v_dept_emp as select ename,dname,sal,hiredate,e.deptno from emp e,dept d where e.deptno
= e.deptno and e.deptno = 10;
create view v_dept_avg_sal_grade as select a.deptno, a.avg_sal, b.grade
from (select deptno, avg(sal) avg_sal from emp group by deptno) a, salgrade b
where a.avg_sal between b.losal and b.hisal; /*注意mysql不支持子查詢創(chuàng)建視圖*/
修改視圖
alter view v_dept_emp as select ename,dname,sal,hiredate,e.deptno from e
mp e,dept d where e.deptno = 20;
刪除視圖
drop view if exists v_dept_emp;