天天看點

Mysql筆記(8)【視圖】十八、視圖(view)

目錄

十八、視圖(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;(檢視視圖)

Mysql筆記(8)【視圖】十八、視圖(view)

3)删除視圖

        1.文法結構:drop view if exists 視圖名稱;

        2.示例:删除myview視圖

        Drop view if exists myview;(删除視圖)

Mysql筆記(8)【視圖】十八、視圖(view)

4)修改視圖

        1.文法機構:alter view 視圖名稱 as 查詢語句;

        2.示例:将myview視圖修改為empno,ename,sal;

        Alter view myview as select empno,ename,sal from emp;(修改視圖)

Mysql筆記(8)【視圖】十八、視圖(view)

結論:對視圖進行增删改查,會影響原表資料。(通過視圖影響原表資料的,不是直接操作的原表)可以對視圖進行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;

Mysql筆記(8)【視圖】十八、視圖(view)

2.從視圖表emp_bak中建立empno,ename,sal視圖

        Create view myview1 as select empno,ename,sal from emp_bak;

Mysql筆記(8)【視圖】十八、視圖(view)

3.視圖myview1中編号為'7369'的姓名和工資修改為'yuan','889';

        Update myview1 set ename='yuan',sal='889' where empno='7369';

Mysql筆記(8)【視圖】十八、視圖(view)

結論:建立原表的視圖,再由原表的視圖來形成操作表,這樣不會影響原表的資料,進行測試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;

Mysql筆記(8)【視圖】十八、視圖(view)

結論:視圖可以隐藏表的實作細節。保密級别較高的系統,資料庫隻對外提供相關的視圖,java程式員隻對視圖對象進行CRUD。

2.create view myview3 as select empno a,ename b,sal c from emp;

Mysql筆記(8)【視圖】十八、視圖(view)

結論:面向視圖查詢,隻知道myview3中有a,b,c三個字段,不知道該字段視圖背後真實表結構是什麼