首先我們瞭解下什麼是視圖:
視圖就是封裝了一條複雜查詢的語句,視圖是一個虛表,最大的優點就是簡化了複雜的查詢(比如多表聯查,我們可以把多張表整合到一個視圖上面)。
換句話說,視圖就是一張虛擬的表,本身不存放數據,數據來源於原始的表。
CREATE [OR REPLACE] VIEW 視圖名
AS
SELECT查詢 (需要查詢的結果)
[WITH READ ONLY CONSTRAINT]
(設置是否可以對視圖進行增刪改查)
語法解析:
- OR REPLACE:如果視圖已經存在,則替換舊視圖。
- FORCE:即使基表不存在,也可以創建該視圖,但是該視圖不能正常使用,當基表創建成功後,視圖才能正常使用。
- WITH READ ONLY:默認可以通過視圖對基表執行增刪改操作,但是有很多在基表上的限制(比如:基表中某列不能爲空,但是該列沒有出現在視圖中,則不能通過視圖執行insert操作),WITH READ ONLY說明視圖是隻讀視圖,不能通過該視圖進行增刪改操作。現實開發中,基本上不通過視圖對錶中的數據進行增刪改操作。
- 創建視圖
create or replace view emp_view as select * from emp;
或者指定數據列進行創建
select or replace view emp_view as select empno,ename,hiredate from emp; - 查詢視圖
select * from emp_view; - 修改視圖中7369的名字爲’smith’
update emp_view set ename = ‘smith’ where empno = 7369; - 刪除視圖
drop view emp_view; - 創建只讀視圖
create or replace view emp_view as select * from emp with read only;