視圖和用戶權(quán)限1.視圖(view)
- 看一個需求
emp表的列信息很多,有些信息是個人重要信息(比如:sal、comm、mgr、hiredate),如果我們希望某個用戶只能查詢emp表的empno、enamel、job和deptno信息,有什么辦法呢?
答案是使用視圖 。

文章插圖
1.1基本原理
- 視圖是一個虛擬表,其內(nèi)容由查詢定義 。同真實的表一樣,視圖包含列,其數(shù)據(jù)來自對應(yīng)的真實的表(基表)
視圖和基表關(guān)系的示意圖:

文章插圖
- 對視圖的總結(jié)
- 視圖是根據(jù)基表(可以是多個基表)來創(chuàng)建的,視圖是虛擬的表
- 視圖也有列,數(shù)據(jù)來自基表
- 通過視圖可以修改基表的數(shù)據(jù)
- 基表的改變也會影響到視圖的數(shù)據(jù)
- 語法
1. create view 視圖名 as select 語句 -- 創(chuàng)建一個視圖2. alter view 視圖名 as select 語句 -- 修改視圖,更新成新的視圖3. show create view 視圖名 -- 顯示創(chuàng)建視圖的指令4. drop view 視圖名1[,視圖名2,...] -- 刪除視圖例子完成前面提出的需求
創(chuàng)建一個視圖emp_view01,只能查詢emp表的empno、ename、job和deptno列的信息
SELECT * FROM emp;-- 創(chuàng)建一個視圖emp_view01,只能查詢emp表的empno、ename、job和deptno列的信息-- 創(chuàng)建視圖CREATE VIEW emp_view01 AS SELECT empno,ename,job,deptno FROM emp;-- 查看視圖DESC emp_view01;SELECT * FROM emp_view01;SELECT empno, job FROM emp_view01;-- 顯示創(chuàng)建視圖的指令SHOW CREATE VIEW emp_view01; -- 刪除視圖DROP VIEW emp_view01;- 視圖細節(jié)討論
- 創(chuàng)建視圖后,到數(shù)據(jù)庫去看,對應(yīng)的視圖只有一個視圖結(jié)構(gòu)文件(形式:視圖名.frm)
視圖的數(shù)據(jù)只是來源于基表,本身是沒有數(shù)據(jù)的(一個映射關(guān)系)
- 視圖的數(shù)據(jù)變化會影響到基表,基表的數(shù)據(jù)變化也會影響到視圖 [insert,delete,update]
- 視圖中可以再使用視圖,數(shù)據(jù)仍然來自基表
-- 視圖細節(jié)討論-- 1. 創(chuàng)建視圖后,到數(shù)據(jù)庫去看,對應(yīng)的視圖只有一個視圖結(jié)構(gòu)文件-- (形式:視圖名.frm)-- 2. 視圖的數(shù)據(jù)變化會影響到基表 [insert,delete,update]UPDATE emp_view01 SET job = 'MANAGER' WHERE empno=7369;-- 修改視圖SELECT * FROM emp; -- 查詢基表,,發(fā)現(xiàn)數(shù)據(jù)變了-- 基表的數(shù)據(jù)變化也會影響到視圖UPDATE emp SET job = 'SALESMAN' WHERE empno=7369;-- 修改基表SELECT * FROM emp_view01; -- 查詢視圖,發(fā)現(xiàn)數(shù)據(jù)變了-- 3. 視圖中可以再使用視圖,比如從emp_view01視圖中選出empno和ename做出新的視圖CREATE VIEW emp_view02 AS SELECT empno,ename FROM emp_view01;1.3視圖應(yīng)用實例- 視圖最佳實踐
- 安全:
一些數(shù)據(jù)表有著重要的信息 。有些字段是保密的,不能讓用戶直接看到 。這時就可以創(chuàng)建一個視圖,在這張視圖中只保留一部分字段 。這樣,用戶就可以查詢自己需要的字段,不能查看保密的字段 。
- 性能:
關(guān)系數(shù)據(jù)庫的數(shù)據(jù)常常會分表存儲,使用外鍵建立這些表之間的關(guān)系 。這時,數(shù)據(jù)庫查詢經(jīng)常會用到連接(JOIN) 。這樣做不但麻煩,效率相對也比較低 。如果建立一個視圖(基于多個基表),將相關(guān)的表和字段組合在一起,就可以避免使用JOIN查詢數(shù)據(jù) 。
- 靈活:
如果系統(tǒng)中有一張舊的表,這張表由于設(shè)計的問題即將被廢棄 。然而,很多應(yīng)用都是基于這張表,不易修改 。這時就可以建立一張視圖,視圖中的數(shù)據(jù)直接映射到新的表 。這樣就可以少做很多改動,也達到了升級數(shù)據(jù)表的目的 。經(jīng)驗總結(jié)擴展閱讀
- tcl電視怎么樣 海信和tcl電視哪個好呢
- 銳炬顯卡和mx330哪個好_銳炬顯卡和mx330選哪個
- 小米11pro、三星s21+、蘋果12和三星note20ultra哪個好-購機建議
- 蘋果13pro和華為mate40pro區(qū)別對比_哪款更值得入手
- 網(wǎng)簽合同和購房合同一樣嗎
- “夜淘寶”正式上線 和淘寶有什么區(qū)別
- 2023靈活就業(yè)人員社保繳納的比例 公司和個人分別是多少?
- 兩將軍問題和TCP三次握手
- 海棠朵朵結(jié)局
- 卸妝水和卸妝油的區(qū)別有哪些
