什么是視圖
1.視圖是一種根據(jù)查詢(也就是SELECT表達(dá)式)定義的數(shù)據(jù)庫對(duì)象,用于獲取想要看到和使用的局部數(shù)據(jù)。
2.視圖有時(shí)也被成為“虛擬表”。
3.視圖可以被用來從常規(guī)表(稱為“基表”)或其他視圖中查詢數(shù)據(jù)。
4.相對(duì)于從基表中直接獲取數(shù)據(jù),視圖有以下好處:
●訪問數(shù)據(jù)變得簡(jiǎn)單
●可被用來對(duì)不同用戶顯示不同的表的內(nèi)容
用來協(xié)助適配表的結(jié)構(gòu)以適應(yīng)前端現(xiàn)有的應(yīng)用程序。
視圖作用:
●提高檢索效率
●隱藏表的實(shí)現(xiàn)細(xì)節(jié)【面向視圖檢索】
創(chuàng)建視圖
如下示例:查詢員工的姓名,部門,工資入職信息等信息。
select ename,dname,sal,hiredate,e.deptno from emp e,dept d where e.deptno
= e.deptno and e.deptno = 10;
為什么使用視圖?因?yàn)樾枨鬀Q定以上語句需要在多個(gè)地方使用,如果頻繁的拷貝以上代碼,會(huì)給維護(hù)帶來成本,視圖可以解決這個(gè)問題。
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;