免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

day09-2視圖和用戶權(quán)限

視圖和用戶權(quán)限1.視圖(view)

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

day09-2視圖和用戶權(quán)限

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

    文章插圖
  2. 對視圖的總結(jié)
    • 視圖是根據(jù)基表(可以是多個基表)來創(chuàng)建的,視圖是虛擬的表
    • 視圖也有列,數(shù)據(jù)來自基表
    • 通過視圖可以修改基表的數(shù)據(jù)
    • 基表的改變也會影響到視圖的數(shù)據(jù)
1.2視圖使用細節(jié)
  • 語法
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é)討論
  1. 創(chuàng)建視圖后,到數(shù)據(jù)庫去看,對應(yīng)的視圖只有一個視圖結(jié)構(gòu)文件(形式:視圖名.frm)
    視圖的數(shù)據(jù)只是來源于基表,本身是沒有數(shù)據(jù)的(一個映射關(guān)系)
  2. 視圖的數(shù)據(jù)變化會影響到基表,基表的數(shù)據(jù)變化也會影響到視圖 [insert,delete,update]
  3. 視圖中可以再使用視圖,數(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)用實例
  • 視圖最佳實踐
  1. 安全:
    一些數(shù)據(jù)表有著重要的信息 。有些字段是保密的,不能讓用戶直接看到 。這時就可以創(chuàng)建一個視圖,在這張視圖中只保留一部分字段 。這樣,用戶就可以查詢自己需要的字段,不能查看保密的字段 。
  2. 性能:
    關(guān)系數(shù)據(jù)庫的數(shù)據(jù)常常會分表存儲,使用外鍵建立這些表之間的關(guān)系 。這時,數(shù)據(jù)庫查詢經(jīng)常會用到連接(JOIN) 。這樣做不但麻煩,效率相對也比較低 。如果建立一個視圖(基于多個基表),將相關(guān)的表和字段組合在一起,就可以避免使用JOIN查詢數(shù)據(jù) 。
  3. 靈活:
    如果系統(tǒng)中有一張舊的表,這張表由于設(shè)計的問題即將被廢棄 。然而,很多應(yīng)用都是基于這張表,不易修改 。這時就可以建立一張視圖,視圖中的數(shù)據(jù)直接映射到新的表 。這樣就可以少做很多改動,也達到了升級數(shù)據(jù)表的目的 。

    經(jīng)驗總結(jié)擴展閱讀