視圖,虛擬表,從一個表或多個表中導出來的表,作用和真實表一樣,包含一系列帶有行和列的數據 視圖中,用戶可以使用SELECT語句查詢數據,也可以使用INSERT,UPDATE,DELETE修改記錄,視圖可以使用戶操作方便,並保障資料庫系統安全
優點及缺點
優點
簡單化,數據所見即所得
安全性,用戶只能查詢或修改他們所能見到得到的數據
邏輯獨立性,可以屏蔽真實表結構變化帶來的影響
缺點
性能相對較差,簡單的查詢也會變得稍顯複雜
修改不方便,特變是複雜的聚合視圖基本無法修改
創建視圖語法詳解
語法結構:
{ CREATE|REPLACE } [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [{column_list}]
AS SELECT_STATEMENT
[WITH [CASCADED | LOCAL |] CHECK OPTION]
釋義:
CREATE|REPLACE : 【創建|替換已創建的】視圖
ALGORITHM : 視圖算法
1.UNDEFINED 系統自動選擇算法2.MERGE使用的視圖語句與視圖定義合併起來3.TEMPTABLE 結果存入臨時表,然後用臨時表執行語句view_name : 視圖名稱
column_list : 屬性列
SELECT_STATEMENT :SELECT語句
[WITH [CASCADED | LOCAL |] CHECK OPTION] 表示視圖在更新時保證在視圖的權限範圍內
1.CASCADED 默認值 更新視圖時要滿足所有相關視圖和表的條件,2.LOCAL表示更新視圖時滿足該視圖本身定義的條件即可。示例用表
創建視圖示例
# 1_1 在單表中創建視圖
CREATE VIEW test_view_1 AS SELECT `name` FROM t_user;
# 1_2 查詢視圖
SELECT * FROM test_view_1;
# 2_1 創建視圖並指定視圖欄位名
CREATE VIEW test_view_2(username) AS SELECT `name` FROM t_user;
# 2_2 查詢視圖
SELECT * FROM test_view_2;
# 3_1 在多表中創建視圖
CREATE VIEW test_view_3 (username, userage, usersex) AS SELECT
t_user.`name`,
t_user_info.age,
t_user_info.sex
FROM
t_user,
t_user_info
WHERE
t_user.id = t_user_info.uid;
# 3_2 查詢視圖
SELECT * FROM test_view_3;