一、視圖的基本介紹
視圖是虛擬的表。與包含數據的表不一樣,視圖只包含使用時動態檢索數據的查詢。
使用視圖需要MySQL5及以后的版本支持。
下面是視圖的一些常見應用:
重用SQL語句;
簡化復雜的SQL操作;
使用表的組成部分而不是整個表;
保護數據;
更改數據格式和表示;
在視圖創建之后,可以用與表基本相同的方式利用它們。
但對於大量的復雜或嵌套視圖,性能可能下降得很厲害。因此在部署相應的應用前,應進行充分的測試。
二、使用視圖的規則和限制
與表一樣,視圖必須唯一命名(不能給視圖取與別的視圖或表相同的名字);
對於可以創建的視圖數目沒有限制;
為了創建視圖,必須具有足夠的訪問權限;
視圖可嵌套;
ORDER BY可以用在視圖中;
視圖不能索引,也不能有關聯的觸發器或默認值;
視圖可以和表一起使用;
三、使用視圖
create view 視圖名 [(列名1,列名2,...)] as sql語句
1、創建視圖
create view view_name
AS
select 語句
示例:
mysql> create or replace view v_pic_url
-> as
-> select
-> id,url
-> from v9_picture
-> where catid=17;
2、查看創建視圖的語句
SHOW CREATE VIEW viewname;
示例:
mysql> show create view v_pic_url;
3、修改或更新視圖
alter view 視圖名 [(列名1,列名2,...)] as sql語句
可以先將視圖DROP,再使用CREATE語句創建;
也可以直接使用CREATE OR REPLACE VIEW語句;
4、刪除視圖
DROP VIEW viewname;
示例:
mysql> drop view v_pic_url;
四、更新視圖數據
通常,視圖是可更新的(即,可以對它們使用INSERT、UPDATE和DELETE)。更新一個視圖將更新其基表。如果對視圖增加或刪除行,實際上是對其基表增加或刪除行。
但是,並非所有視圖都是可更新的。如果視圖定義中有以下操作,則不能進行視圖的更新:
分組(使用GROUP BY和HAVING);
聯結;
子查詢;
並;
聚焦函數;
DISTINCT;
導出(計算)列;
一般,應該將視圖用於檢索而不用於更新。
