視圖


6.1 視圖概述

6.1.1 視圖的含義

視圖是一個虛擬表,是從數據庫中一個或多個表中導出來的表。視圖還可以從已經存在的視圖的基礎上定義。
視圖一經定義便存儲在數據庫中,與其相對應的數據並沒有像表那樣在數據庫中再存儲一份,通過視圖看到的數據只是存放在基本表中的數據。對視圖的操作與對表的操作一樣,可以對其進行查詢、修改和刪除。當對通過視圖看到的數據進行修改時,相應的基本表的數據也要發生變化;同時,若基本表的數據發生變化,則這種變化可以自動地反映到視圖中。

6.1.2 視圖的作用

與直接從數據表中讀取相比,視圖有以下優點:
● 簡單性
● 安全性
● 邏輯數據獨立性

6.2 創建視圖

6.2.1 創建視圖的語法形式

創建視圖使用CREATE VIEW語句,基本語法格式如下:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

6.2.2 在單表上創建視圖

MySQL可以在單個數據表上創建視圖。
【例6.1】在t表上創建一個名為view_t的視圖,代碼如下:
首先創建基本表並插入數據,語句如下:
CREATE TABLE t (quantity INT, price INT);
INSERT INTO t VALUES(3, 50);

6.2.3 在多表上創建視圖

MySQL中也可以在兩個或者兩個以上的表上創建視圖,可以使用CREATE VIEW語句實現。
創建視圖stu_glass,語句如下:
CREATE VIEW stu_glass (id,name, glass) AS SELECT student.s_id,student.name ,
stu_info.glass
FROM student ,stu_info WHERE student.s_id=stu_info.s_id;

6.3 查看視圖

6.3.1 DESCRIBE語句查看視圖基本信息

DESCRIBE可以用來查看視圖。
DESCRIBE 視圖名;
【例6.4】通過DESCRIBE語句查看視圖view_t的定義,代碼如下:
DESCRIBE view_t;

6.3.2 SHOW TABLE STATUS語句查看視圖基本信息

查看視圖的信息可以通過SHOW TABLE STATUS的方法。
SHOW TABLE STATUS LIKE '視圖名';
【例6.5】下面將通過一個例子來學習使用SHOW TABLE STATUS命令查看視圖信息,代碼如下:
SHOW TABLE STATUS LIKE 'view_t' \G

6.3.3 SHOW CREATE VIEW語句查看視圖詳細信息

使用SHOW CREATE VIEW語句可以查看視圖詳細定義。
SHOW CREATE VIEW 視圖名;
【例6.6】SHOW CREATE VIEW查看視圖的詳細定義,代碼如下:
SHOW CREATE VIEW view_t \G

6.3.4 在views表中查看視圖詳細信息

在MySQL中,information_schema數據庫下的views表中存儲了所有視圖的定義。通過對views表的查詢,可以查看數據庫中所有的視圖的詳細信息。
SELECT * FROM information_schema.views;
【例6.7】在views表中查看視圖的詳細定義,代碼如下:
mysql> SELECT * FROM information_schema.views\G

6.4 修改視圖

6.4.1 CREATE OR REPLACE VIEW語句修改視圖

修改視圖,使用CREATE OR REPLACE VIEW語句,語法如下:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

6.4.2 ALTER語句修改視圖

ALTER語句是MySQL提供的另外一種修改視圖的方法。
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

6.5 更新視圖

更新視圖是指通過視圖來插入、更新、刪除表中的數據,因為視圖是一個虛擬表,其中沒有數據。通過視圖更新的時候都是轉到基本表進行更新的,如果對視圖增加或者刪除記錄,實際上是對其基本表增加或者刪除記錄

6.6 刪除視圖

當視圖不再需要時,可以將其刪除,刪除一個或多個視圖可以使用DROP VIEW語句,刪除視圖必須擁有DROP權限。
DROP VIEW [IF EXISTS]
view_name [, view_name] ...
[RESTRICT | CASCADE]
6.7 綜合案例——視圖應用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM