亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

SQL 視圖

1. 定義

慕課解釋:視圖是一個或多個表記錄的集合,其結構和數據是建立在其它表的查詢基礎之上的。視圖可以理解為表,它可以像表一樣操作,但是視圖不是真實存在,它只是一張虛表。

2. 前言

本小節,我們將一起學習 SQL 中的視圖。

在一些場景中,有些查詢的結果集很大,且我們需要在多處復用到這些結果集;如果每次都去查詢一次,會耗費大量的時間,SQL 支持我們將這些數據集保存為視圖,并且可以像操作表一樣去操作這些視圖。

本小節測試數據如下,請先在數據庫中執行:

DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
  id int PRIMARY KEY,
  username varchar(20),
  age int
);
INSERT INTO imooc_user(id,username,age)
VALUES (1,'peter',18),(2,'pedro',24),(3,'jerry',22),(4,'mike',18),(5,'tom',20);

3. 視圖的創建與刪除

視圖的數據來源于查詢。

其基礎創建語法如下:

CREATE VIEW [view_name] 
AS
SELECT [col] FROM [table_name];

視圖也可以被刪除,語法如下:

DROP VIEW [view_name];

其中 view_name 表示視圖名稱,col 代表字段名稱,table_name 表示數據表名稱。

3.1 例 1 新建視圖

請書寫 SQL 語句,查詢 imooc_user 的所有 idage 字段,并以該結果新建一個視圖。

分析:

按照視圖創建語法寫出語句即可。

語句:

CREATE VIEW user_shorcut_view 
AS
SELECT id,age FROM imooc_user;

創建成功后,結果如下:

# select * from user_shorcut_view;
+----+----------+
| id | username |
+----+----------+
| 1  | peter    |
| 2  | pedro    |
| 3  | jerry    |
| 4  | mike     |
| 5  | tom      |
+----+----------+

3.2 例 2 刪除視圖

請書寫 SQL 語句,刪除 user_shorcut_view 視圖。

分析:

使用 Drop 指令刪除該視圖即可。

語句:

DROP VIEW user_shorcut_view;

4. 操作視圖

視圖可以像數據表一樣操作,且數據表的數據被更新后,也會同步更新到與之相關的視圖中。

4.1 例 3 查詢視圖

請書寫 SQL 語句,從 user_shorcut_view 視圖中找出 id2 的用戶。

分析:

使用 Select 指令像查詢數據表一樣查詢視圖。

語句:

SELECT username FROM user_shorcut_view WHERE id = 2;

結果如下:

+----------+
| username |
+----------+
| pedro    |
+----------+

5. 小結

  • 視圖很大程度上可以簡化查詢操作,還可以定制數據。
  • 視圖不易創建過多,由于更新表的同時也會更新關聯的視圖,因此視圖會降低數據庫的性能。