程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle:視圖(view)

Oracle:視圖(view)

編輯:Oracle教程

Oracle:視圖(view)


視圖的概念:從表中抽取出邏輯上相關的數據集合
視圖相關概念
1.視圖是一種續表
2.視圖建立在已有表的基礎上,視圖賴以建立的這些表稱為基表
3.向視圖提供數據內容的語句為SELECT語句,可以將視圖理解為存儲起來的SELECT語句

視圖的作用
1.控制數據訪問
2.簡化查詢
3.避免重復訪問相同的數據
理解:將經常重復訪問的數據(對應到表中某些字段(可以是多表連接查詢後的結果))新建成視圖,可以大大的簡化查詢。
簡單視圖和復雜視圖:復雜視圖中有函數和分組(相當於形成了新表,於基表沒有關系)
視圖的創建和修改
 

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
     如: CREATE VIEW   empvu80
          AS SELECT  employee_id, last_name, salary
          FROM    employees
          WHERE   department_id = 80;
                如:CREATE OR REPLACE VIEW empvu80
         (id_number, name, sal, department_id)
         AS SELECT  employee_id, first_name || ' ' || last_name,
         salary, department_id
         FROM    employees
         WHERE   department_id = 80;

當視圖定義中包含以下元素之一時不能使用delete:
1.組函數
2.GROUP BY 子句
3.DISTINCT 關鍵字
4.ROWNUM 偽列
當視圖定義中包含以下元素之一時不能使用update:
?組函數
?GROUP BY子句
?DISTINCT 關鍵字
?ROWNUM 偽列
?列的定義為表達式
當視圖定義中包含以下元素之一時不能使insert:
?組函數
?GROUP BY 子句
?DISTINCT 關鍵字
?ROWNUM 偽列
?列的定義為表達式
?表中非空的列在視圖定義中未包括
理解:主要需要記住的是rownum偽劣不能使用delete,其他的相當於形成了新表,
或是有約束條件的時候也不能delete,insert,有時候update也不行,視情況而定,
視圖的主要作用是用於簡化查詢。
屏蔽DML操作:
使用:WITH READ ONLY
任何 DML 操作都會返回一個Oracle server 錯誤

**刪除視圖:**DROP VIEW view

TOP-N 分析:
Top-N 分析查詢一個列中最大或最小的 n 個值
最大和最小的值的集合是 Top-N 分析所關心的

SELECT [column_list], ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;


**注意:
對 ROWNUM 只能使用 < 或 <=, 而用 =, >, >= 都將不能返回任何數據。**
如:查詢員工表中,工資排名在40-50之間的員工信息。
 

select *
from(
select rownum rn,employee_id,salary
from(
select employee_id,salary,last_name
from employees
order by salary desc
)
)where rn <=50 and rn >40

誰知道Markdown編輯器怎麼進行縮進,有點小郁悶,排版都亂了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved