檢視表 ( View ) 可以說是一個「類似於資料表 ( Table ) 」的東西,不過最大的差異在於檢視表僅儲存 SELECT 敘述句。因為檢視表本身並沒有「建立新資料表」的行為,當資料量大時,可以節省多餘的資料表數量來節省空間。同時,把經常使用的 SELECT 敘述句用 View 的方式先留存下來,這樣一來也方便日後取用、並根據對應資料表中的最新內容作更新。
簡言之,View 可以想成一個「虛擬的資料表」,特性是用於檢視用非常方便。
CREATE VIEW <viewName> (<fieldName1>,<fieldName2>......)
AS
<SELECT Statement>
以先前建立的 Product 資料表,若要建立一個商品類別統計的 View ,那就會寫成如下:
/*建立名為 「categorySum」的 View*/
CREATE VIEW categorySum (name, countNum)
AS
SELECT category, COUNT(*)
FROM Product
GROUP BY category;
/*呼叫 categorySum*/
SELECT name, countNum FROM categorySum;
不過要注意的地方是, View 如果搭配 ORDER BY 使用時,依據資料庫的不同,有時候會出現錯誤。
直接使用 DROP VIEW 語法就可以了。
DROP VIEW <viewName>
本質上並不建議使用 View 來更新原本資料表的內容,因為有著諸多限制。除非你可以確定在對 VIEW 中進行操作時,對應的資料表僅找的到唯一筆資料。
若你在建立 VIEW 時有使用到以下函式如:SUM, MIN, MAX, COUNT, GROUP BY, HAVING,......等,那麼是沒辦法使用 VIEW 作更新原本資料表內容的。
SHOW TABLE STATUS LIKE <viewName>;