MySQL教程92-MySQL查看視圖


創建好視圖后,可以通過查看視圖的語句來查看視圖的字段信息以及詳細信息。本節主要講解如何使用 SQL 語句來查看視圖的字段信息以及詳細信息。

查看視圖的字段信息

查看視圖的字段信息與查看數據表的字段信息一樣,都是使用 DESCRIBE或DESC 關鍵字來查看的。具體語法如下:

DESCRIBE|DESC 視圖名;

示例 1

下面創建學生信息表 studentinfo 的一個視圖,用於查詢學生姓名和考試分數。

創建學生信息表 studentinfo 的 SQL 語句和運行結果如下:

mysql> CREATE TABLE studentinfo(
    -> ID INT(11) PRIMARY KEY,
    -> NAME VARCHAR(20),
    -> SCORE DECIMAL(4,2),
    -> SUBJECT VARCHAR(20),
    -> TEACHER VARCHAR(20));
Query OK, 0 rows affected (0.10 sec)

創建查詢學生姓名和分數的視圖語句如下:

mysql> CREATE VIEW v_studentinfo AS SELECT name,score FROM studentinfo;
Query OK, 0 rows affected (0.04 sec)

通過 DESCRIBE 語句查看視圖 v_studentsinfo 中的字段信息,SQL 語句和運行結果如下所示。

mysql> DESCRIBE v_studentinfo;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(20)  | YES  |     | NULL    |       |
| score | decimal(4,2) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
注意:使用 DESC 的執行結果和使用 DESCRIBE 是一樣的。

由運行結果可以看出,查看視圖的字段內容與查看表的字段內容顯示的格式是相同的。因此,更能說明視圖實際上也是一張數據表了,不同的是,視圖中的數據都來自於數據庫中已經存在的表。

查看視圖的詳細信息

在 MySQL 中,SHOW CREATE VIEW 語句可以查看視圖的詳細定義。其語法如下所示:

SHOW CREATE VIEW 視圖名;

通過上面的語句,還可以查看創建視圖的語句。創建視圖的語句可以作為修改或者重新創建視圖的參考,方便用戶操作。

示例 2

使用 SHOW CREATE VIEW 查看視圖,SQL 語句和運行結果如下所示:

mysql>  SHOW CREATE VIEW v_studentinfo \G
*************************** 1. row ***************************
                View: v_studentinfo
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_studentinfo` AS select `studentinfo`.`NAME` AS `name`,`studentinfo`.`SCORE` AS `score` from `studentinfo`
character_set_client: gbk
collation_connection: gbk_chinese_ci
1 row in set (0.00 sec)

上述 SQL 語句以\G結尾,這樣能使顯示結果格式化。如果不使用\G,顯示的結果會比較混亂,如下所示:

mysql> DESCRIBE v_studentinfo;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name  | varchar(20)  | YES  |     | NULL    |       |
| score | decimal(4,2) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql>  SHOW CREATE VIEW v_studentinfo;
+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View          | Create View                                                                                                                                                                                  | character_set_client | collation_connection |
+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| v_studentinfo | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_studentinfo` AS select `studentinfo`.`NAME` AS `name`,`studentinfo`.`SCORE` AS `score` from `studentinfo` | gbk                  | gbk_chinese_ci       |
+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.01 sec)

拓展

所有視圖的定義都是存儲在 information_schema 數據庫下的 views 表中,也可以在這個表中查看所有視圖的詳細信息,SQL 語句如下:

SELECT * FROM information_schema.views;

不過,通常情況下都是使用 SHOW CREATE VIEW 語句。


免責聲明!

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



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