Seele

Seele

視圖與索引

建立和檢視視圖#

視圖(view)是一種特殊的表格,它可以將資料表的資料查詢或操作抽象成一個獨立的資料庫操作。實際上並不存在於資料庫中。
資料庫中只儲存了視圖的定義,而視圖的實際資料是透過查詢資料庫來獲取的。因此資料庫內容的變化會影響視圖的資料。

語法:

CREATE VIEW [視圖名稱] AS [SELECT語句]

提示:

  1. 視圖的名稱不能與資料庫中的其他表格名稱或視圖重複。且視圖的名稱不能以數字開頭。
  2. SELECT 語句是一個 SELECT 語句。可查詢多個表格的資料。對於這個語句有以下限制:
    1. 使用者需要具有 CREATE VIEW 權限,以及 SELECT 相關表格和視圖的權限。
    2. SELECT 語句不能引用系統或使用者變數。
    3. SELECT 語句不能包含 FROM 子句中的子查詢。
    4. SELECT 語句不能引用預處理語句參數。

    預處理:建立 SQL 語句模板並發送到資料庫。預留的值使用參數 "?" 標記。例如:

    INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
    
  3. 建立視圖需要引用的表格或視圖存在,但建立完成後可以不存在(但資料肯定會出問題了)。可以用CHECK TABLE檢查表格是否存在。
  4. 視圖定義允許使用 ORDER BY 子句。但如果視圖中使用了 ORDER BY 子句,那麼在查詢視圖時,視圖中的資料也會按照 ORDER BY 子句排序。
  5. 視圖定義不能引用臨時表格,不能建立臨時表格視圖。
  6. WITH CHECK OPTION 關鍵字可以讓視圖檢查視圖中的資料是否有效。

範例#

從單一表格建立

CREATE VIEW MyView AS
SELECT * FROM MyTable

從多個表格建立

CREATE VIEW MyView AS
SELECT * FROM MyTable1, MyTable2

從多個表格建立,並指定欄位

CREATE VIEW MyView AS
SELECT MyTable1.id, MyTable1.name, MyTable2.age
FROM MyTable1, MyTable2

從多個表格建立,並指定欄位,並指定欄位的順序

CREATE VIEW MyView AS
SELECT MyTable1.id, MyTable1.name, MyTable2.age
FROM MyTable1, MyTable2
ORDER BY MyTable1.id, MyTable2.age

指定視圖中欄位的名稱即對應關係

CREATE VIEW MyView 
(id,name,number)    AS
SELECT MyTable1.id, MyTable1.name, MyTable2.age
FROM MyTable1, MyTable2

查詢視圖#

視圖可以用於查詢,不建議用於更新資料

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。