oracle_視圖,oracle視圖

來源:互聯網
上載者:User

oracle_視圖,oracle視圖

oracle_視圖

①視圖
1.視圖是一種虛表。
視圖建立在已有表的基礎上, 視圖賴以建立的這些表稱為基表。
向視圖提供資料內容的語句為 SELECT 語句, 可以將視圖理解為儲存起來的 SELECT 語句.
視圖向使用者提供基表資料的另一種表現形式

2.為什麼使用視圖
    控制資料訪問
    簡化查詢
    避免重複訪問相同的資料

3.簡單視圖和複雜視圖
特性          簡單視圖        複雜視圖
表的數量        一個       一個或多個
函數            沒有         有
分組            沒有         有
DML 操作        可以       有時可以

②建立視圖
在 CREATE VIEW 語句中嵌入子查詢
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
  [(alias[, alias]...)]
 AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];

子查詢可以是複雜的 SELECT 語句

③修改視圖
使用CREATE OR REPLACE VIEW 子句修改視圖
CREATE VIEW 子句中各列的別名應和子查詢中各列相對應

④視圖中使用DML的規定
    可以在簡單視圖中執行 DML 操作
1.當視圖定義中包含以下元素之一時不能使用delete:
    組函數
    GROUP BY 子句
    DISTINCT 關鍵字
    ROWNUM 偽列

2.當視圖定義中包含以下元素之一時不能使用update:
    組函數
    GROUP BY子句
    DISTINCT 關鍵字
    ROWNUM 偽列
    列的定義為運算式
3.當視圖定義中包含以下元素之一時不能使insert:
    組函數
    GROUP BY 子句
    DISTINCT 關鍵字
    ROWNUM 偽列
    列的定義為運算式
    表中非空的列在視圖定義中未包括

4.屏蔽 DML 操作
    可以使用 WITH READ ONLY 選項屏蔽對視圖的DML 操作
    任何 DML 操作都會返回一個Oracle server 錯誤

⑤刪除視圖
刪除視圖只是刪除視圖的定義,並不會刪除基表的資料

⑥Top-N 分析
查詢最大的幾個值的 Top-N 分析
SELECT [column_list], ROWNUM 
FROM   (SELECT [column_list]
        FROM table
        ORDER  BY Top-N_column)
WHERE  ROWNUM <=  N;
注意: 對 ROWNUM 只能使用 < 或 <=, 而用 =, >, >= 都將不能返回任何資料。

例:
select *
from (
      select rownum rn,t.*
      from (
           select * from employees
           ) t
      where rownum <=20
      )
where rn > 10




Oracle中怎建視圖

Oracle中建立視圖

Oracle的資料庫物件分為五種:表,視圖,序列,索引和同義字。
視圖是基於一個表或多個表或視圖的邏輯表,本身不包含資料,通過它可以對錶裡面的資料進行查詢和修改。視圖基於的表稱為基表。
視圖是儲存在資料字典裡的一條select語句。 通過建立視圖可以提取資料的邏輯上的集合或組合。
視圖的優點:
1.對資料庫的訪問,因為視圖可以有選擇性的選取資料庫裡的一部分。
2.使用者通過簡單的查詢可以從複雜查詢中得到結果。
3.維護資料的獨立性,試圖可從多個表檢索資料。
4.對於相同的資料可產生不同的視圖。
視圖分為簡單視圖和複雜視圖:
簡單視圖只從單表裡擷取資料
複雜視圖從多表

簡單視圖不包含函數和資料群組
複雜視圖包含
簡單視圖可以實現DML操作
複雜視圖不可以.
視圖的建立:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY]
其中:
OR REPLACE :若所建立的試圖已經存在,ORACLE自動重建該視圖;
FORCE :不管基表是否存在ORACLE都會自動建立該視圖;
NOFORCE :只有基表都存在ORACLE才會建立該視圖:
alias :為視圖產生的列定義的別名;
subquery :一條完整的SELECT語句,可以在該語句中定義別名;
WITH CHECK OPTION :
插入或修改的資料行必須滿足視圖定義的約束;
WITH READ ONLY :
該視圖上不能進行任何DML操作。
例如:
CREATE OR REPLACE VIEW dept_sum_vw
(name,minsal,maxsal,avgsal)
AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
FROM emp e,dept d
WHERE e.deptno=d.deptno
GROUP BY d.dname;

視圖的定義原則:
1.視圖的查詢可以使用複雜的SELECT文法,包括串連/分組查詢和子查詢;
2.在沒有WITH CHECK OPTION和 READ ONLY 的情況下,查詢中不能使用
ORDER BY 子句;
3.如果沒有為CHECK OPTION約束命名,系統會自動為之命名,形式為SYS_Cn;
4.OR REPLACE選項可以不刪除原視圖便可更改其定義並重建,或重新授予對象
許可權。

視圖的查詢:
視圖建立成功後,可以從視圖中檢索資料,這點和從表中檢索資料一樣。
還可以查詢檢視的全部資訊和指定的資料行和列。
如:

......餘下全文>>
 
oracle建立視圖

CREATE or REPLACE view view_will as
select college.collegeid,mat.stuid,sum(score.chinese+score.math+score.english+score.complex)
from college,mat,score
where college.collegeid=mat.first_will and mat.stuid=score.stuid
group by SCORE.STUID,COLLEGE.COLLEGEID,MAT.STUID having
sum(score.chinese+score.math+score.english+score.complex)>500
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.