需求描述:
在看mysql的視圖,對於視圖的定義,進行基本的了解,在此記錄下.
概念解釋:
視圖:存儲的查詢語句,當調用的時候,產生結果集,視圖充當的是虛擬表的角色.
測試過程:
說明:
- 如果要對一張表或者多張表進行查詢,可以通過寫復雜的SQL語句來實現
- 如果要這些SQL語句存儲為視圖,那么查詢的時候,就直接查詢這個視圖就可以了.
1.創建表,插入數據,並且執行查詢
mysql> CREATE TABLE t (qty INT, price INT); Query OK, 0 rows affected (0.09 sec) mysql> INSERT INTO t VALUES(3, 50), (5, 60); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM t; +------+-------+ | qty | price | +------+-------+ | 3 | 50 | | 5 | 60 | +------+-------+ 2 rows in set (0.00 sec)
2.創建視圖,視圖中的查詢根據具體的情況有相應的表達式
mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t; Query OK, 0 rows affected (0.01 sec)
3.查詢視圖v
mysql> SELECT * FROM v; +------+-------+-------+ | qty | price | value | +------+-------+-------+ | 3 | 50 | 150 | | 5 | 60 | 300 | +------+-------+-------+ 2 rows in set (0.00 sec)
對於視圖的查詢也可以加上過濾條件:mysql> SELECT * FROM v WHERE qty = 5;
+------+-------+-------+
| qty | price | value |
+------+-------+-------+
| 5 | 60 | 300 |
+------+-------+-------+
1 row in set (0.00 sec)
備注:所以僅僅查詢這個視圖,和執行定義語句中的SQL語句的效果相同.即就相當於查詢了一張表.同時,視圖也就等同於后面的查詢語句,視圖是存儲在數據庫中的,所以就理解了開頭說的存儲的查詢.
4.查看當前庫下所有的視圖
mysql> show full tables where table_type like 'VIEW'; +----------------+------------+ | Tables_in_test | Table_type | +----------------+------------+ | v | VIEW | | vw_01 | VIEW | +----------------+------------+ 2 rows in set (0.00 sec)
5.基於其他的視圖來創建視圖
mysql> select * from vw_01; #vw_01是一個視圖. +---+------+ | a | b | +---+------+ | 1 | NULL | | 2 | NULL | | 3 | NULL | | 4 | NULL | +---+------+ 4 rows in set (0.00 sec) mysql> create view v01 as select a,b from vw_01; #基於視圖來創建視圖,也就是說,視圖定義中的SELECT查詢的是另外的視圖. Query OK, 0 rows affected (0.02 sec) mysql> select * from v01; +---+------+ | a | b | +---+------+ | 1 | NULL | | 2 | NULL | | 3 | NULL | | 4 | NULL | +---+------+ 4 rows in set (0.00 sec)
文檔創建時間:2018年6月26日17:14:10