mysql視圖

當想由一張表的字段做爲條件獲取其餘表對應的信息的時候。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

image

說明: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

說明:

就是將結果當成一張單獨的表來時使用,只是這張所謂的表,並不是真實的表。

相關文章
相關標籤/搜索