MySQL—视图(一)
一、視圖的概念
視圖(view)是一個從單張或多張基礎數據表或其他視圖中構建出來的虛擬表。同基礎表一樣,視圖中也包含了一系列帶有名稱的列和行數據,但是數據庫中只是存放視圖的定義,也就是動態檢索數據的查詢語句,而并不存放視圖中的數據,這些數據依舊存放于構建視圖的基礎表中,只有當用戶使用視圖時才去數據庫請求相對應的數據,即視圖中的數據是在引用視圖時動態生成的。因此視圖中的數據依賴于構建視圖的基礎表,如果基本表中的數據發生了變化,視圖中相應的數據也會跟著改變。
PS:視圖本質上就是:一個查詢語句,是一個虛擬的表,不存在的表,你查看視圖,其實就是查看視圖對應的sql語句
二、視圖的好處
簡化用戶操作:視圖可以使用戶將注意力集中在所關心地數據上,而不需要關心數據表的結構、與其他表的關聯條件以及查詢條件等。
對機密數據提供安全保護:有了視圖,就可以在設計數據庫應用系統時,對不同的用戶定義不同的視圖,避免機密數據(如,敏感字段“salary”)出現在不應該看到這些數據的用戶視圖上。這樣視圖就自動提供了對機密數據的安全保護功能
三、SQL展示
1、創建/替換單表視圖
create or replace view 視圖名稱 as:創建視圖
create or replace view myview1_1 as select empno,ename,job,comm,deptno from emp where deptno=10 with check option;查看視圖
select * from 視圖名稱:查看視圖
在視圖中插入數據
insert into myview1_1 (empno,ename,job,comm,deptno) values (7778,'love','MANAGER',1212,10)運行后:插入成功
insert into myview1_1 (empno,ename,job,comm,deptno) values (7779,'love1','MANAGER',1212,20)運行后:1369 - CHECK OPTION failed ‘mytestdb.myview1_1’
只能插入部門為10的同事,插入其他的部門同事會報錯
運行后:1054 - Unknown column ‘sal’ in ‘field list’
插入視圖中不存在的字段信息,也會報錯
2、創建/替換多表視圖
create or replace view myview2 as select e.empno,e.ename,e.sal,d.deptno,d.dname from emp e inner join dept d on e.deptno=d.deptno where sal>2000多表視圖:
查看多表視圖
3、創建統計視圖
create or replace view myview3_1 as select e.empno,e.ename,avg(sal),min(sal),max(sal) from emp e inner join dept d on e.deptno=d.deptno group by e.deptno統計視圖為:
4、創建基于視圖的視圖
create or replace view myview4_1 as select * from myview2_1 where deptno=10myview2_1視圖為:
myview4_1視圖為:
總結
以上是生活随笔為你收集整理的MySQL—视图(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【MySQL】求每门科目成绩排名前二的学
- 下一篇: python—sql语句参数化