當想由一張表的字段做爲條件獲取其餘表對應的信息的時候。html
select * from (select nid from tb1 where nid > 2) as A
可是當獲取第一張表的信息的時候,結果是由不少操做結合而成的結果,如:能夠有不少連表操做等。這樣就會致使寫不少重複的sql語句。sql
而獲取表1的結果也是動態查詢處理的。並非一成不變的。ui
所以能夠將這些公共的sql語句集合在一塊兒,對其進行單獨的命名。而這個名字就指代這個表,之後要想利用這個結果進行操做,直接用這名字便可。就不用再重複寫sql語句。code
而這些sql語句造成的表,只是一個虛擬表,並不真實的表。這表就是 視圖。htm
格式: create view 視圖名稱 as sql語句blog
CREATE VIEW v1 AS SELET nid, name FROM A WHERE nid > 4
navicat建立的結果:ip
說明:get
利用查詢語句構建成的表,當原表數據進行變化的時候,建立視圖的數據也會跟着變化。it
格式: drop view 視圖名稱class
DROP VIEW v1
格式: ALTER VIEW 視圖名稱 AS SQL語句
ALTER VIEW v1 AS SELET A.nid, B. NAME FROM A LEFT JOIN B ON A.id = B.nid LEFT JOIN C ON A.id = C.nid WHERE A.id > 2 AND C.nid < 5
使用視圖時,將其看成表進行操做便可,因爲視圖是虛擬表,因此沒法使用其對真實表進行建立、更新和刪除操做,僅能作查詢用。
select * from v1
說明:
就是將結果當成一張單獨的表來時使用,只是這張所謂的表,並不是真實的表。