mysql中,什么是視圖,視圖的作用是什么?


需求描述:

  在看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


免責聲明!

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



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