使用視圖的原因:安全,簡化用戶的SQL語句,防止錯誤的發生,提高性能,讓數據更加有意義;
創建視圖示例:
CREATE VIEW emp_finAS SELECT hire_date,job_id,salary,commission_pct FROM employees;
當對兩張表進行關聯的時候通常用到兩種技術:nested loop, hash join
nestedloop join uses an index to get to individual rows
hash joinreads the whole table into memory;
例
create view dept_emp as select /*+USE_HASH(employees departments)*/ department_name,last_name
fromdepartments natural join employees;
簡單視圖和複雜視圖
簡單視圖和複雜視圖的分類方法是:是否允許DML語句執行
簡單視圖允許DML語句:A simple view draws data from one detailtable, uses no functions ,and does no aggregation
複雜視圖不允許DML語句:A complexview can join detail table, use functions, and perform aggregations;
創建視圖
CREATE [OR REPLACE][FORCE | NOFORCE ] VIEW
viewname [(alias1)]
AS subquery
[WITH CHECK OPTION[CONSTRAINT constraintname]]
[WITH READ ONLY[CONSTRAINT constraintname]];
force:即使原表不存在也建立起一個視圖;
withcheck option:
with read only:組織通過視圖進行DML操作;
視圖必須通過成功編譯纔可以被使用;