MYSQL入門學習之十:視圖的基本操作 相關鏈接: MYSQL入門學習之一:基本操作 http://www.BkJia.com/database/201212/173868.html MYSQL入門學習之二:使用正則表達式搜索 http://www.BkJia.com/database/201212/173869.html MYSQL入門學習之三:全文本搜索 http://www.BkJia.com/database/201212/173873.html MYSQL入門學習之四:MYSQL的數據類型 http://www.BkJia.com/database/201212/175536.html MYSQL入門學習之五:MYSQL的字符集 http://www.BkJia.com/database/201212/175541.html MYSQL入門學習之六:MYSQL的運算符 http://www.BkJia.com/database/201212/175862.html MYSQL入門學習之七:MYSQL常用函數 http://www.BkJia.com/database/201212/175864.html MYSQL入門學習之八:數據庫及表的基本操作 http://www.BkJia.com/database/201212/175867.html MYSQL入門學習之九:索引的簡單操作 http://www.BkJia.com/database/201212/176772.html 一、視圖的基本介紹 www.2cto.com 視圖是虛擬的表。與包含數據的表不一樣,視圖只包含使用時動態檢索數據的查詢。 使用視圖需要MySQL5及以後的版本支持。 下面是視圖的一些常見應用: 重用SQL語句; 簡化復雜的SQL操作; 使用表的組成部分而不是整個表; 保護數據; 更改數據格式和表示; 在視圖創建之後,可以用與表基本相同的方式利用它們。 但對於大量的復雜或嵌套視圖,性能可能下降得很厲害。因此在部署相應的應用前,應進行充分的測試。 二、使用視圖的規則和限制 與表一樣,視圖必須唯一命名(不能給視圖取與別的視圖或表相同的名字); 對於可以創建的視圖數目沒有限制; 為了創建視圖,必須具有足夠的訪問權限; 視圖可嵌套; ORDER BY可以用在視圖中; 視圖不能索引,也不能有關聯的觸發器或默認值; 視圖可以和表一起使用; 三、使用視圖 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; +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ | View | Create View | character_set_client | collation_connection | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ | v_pic_url | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_pic_url` AS select `v9_picture`.`id` AS `id`,`v9_picture`.`url` AS `url` from `v9_picture` where (`v9_picture`.`catid` = 17) | latin1 | latin1_swedish_ci | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ 3、刪除視圖 DROP VIEW viewname; 示例: mysql> drop view v_pic_url; 4、更新視圖結構 可以先將視圖DROP,再使用CREATE語句創建; 也可以直接使用CREATE OR REPLACE VIEW語句; 四、更新視圖數據 通常,視圖是可更新的(即,可以對它們使用INSERT、UPDATE和DELETE)。更新一個視圖將更新其基表。如果對視圖增加或刪除行,實際上是對其基表增加或刪除行。 但是,並非所有視圖都是可更新的。如果視圖定義中有以下操作,則不能進行視圖的更新: 分組(使用GROUP BY和HAVING); 聯結; 子查詢; 並; 聚焦函數; DISTINCT; 導出(計算)列; 一般,應該將視圖用於檢索而不用於更新。 參考:《MySQL必知必會》