目錄
十八、視圖(view)
1)什麼是視圖
2)建立視圖
3)删除視圖
4)修改視圖
5)面向視圖操作
6)視圖的作用
十八、視圖(view)
1)什麼是視圖
1.視圖在資料庫管理系統中也是一個對象,也是以檔案形式存在的;
2.視圖也對應了一個查詢結果,隻是從不同的角度檢視資料;
2)建立視圖
1.文法結構:create view 視圖名稱 as 查詢語句;
2.示例:從emp表中查詢empno,ename,sal結果當作視圖展示
Create view myview as select empno,ename,sal from emp;(建立視圖)
Select * from myview;(檢視視圖)
3)删除視圖
1.文法結構:drop view if exists 視圖名稱;
2.示例:删除myview視圖
Drop view if exists myview;(删除視圖)
4)修改視圖
1.文法機構:alter view 視圖名稱 as 查詢語句;
2.示例:将myview視圖修改為empno,ename,sal;
Alter view myview as select empno,ename,sal from emp;(修改視圖)
結論:對視圖進行增删改查,會影響原表資料。(通過視圖影響原表資料的,不是直接操作的原表)可以對視圖進行CRUD操作;
5)面向視圖操作
emp(原表)
emp_bak(複制原表emp)
myview1(複制視圖表emp_bak中empno,ename,sal)
1.建立emp表視圖
Create table 視圖名稱 as 查詢表語句;
示例:建立emp表視圖
Create table emp_bak as select * from emp;
2.從視圖表emp_bak中建立empno,ename,sal視圖
Create view myview1 as select empno,ename,sal from emp_bak;
3.視圖myview1中編号為'7369'的姓名和工資修改為'yuan','889';
Update myview1 set ename='yuan',sal='889' where empno='7369';
結論:建立原表的視圖,再由原表的視圖來形成操作表,這樣不會影響原表的資料,進行測試CRUD操作。
6)視圖的作用
1.面向視圖查詢,可以提高查詢效率
例如:
a)單獨執行:select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;
b)将上面執行結果當作視圖對象建立
Create view myview2 as select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;
Select * from myview2;
結論:視圖可以隐藏表的實作細節。保密級别較高的系統,資料庫隻對外提供相關的視圖,java程式員隻對視圖對象進行CRUD。
2.create view myview3 as select empno a,ename b,sal c from emp;
結論:面向視圖查詢,隻知道myview3中有a,b,c三個字段,不知道該字段視圖背後真實表結構是什麼