簡(jiǎn)單的說,視圖是一張?zhí)摂M表,可以加快查詢速度。
創(chuàng)建視圖:CREATE VIEW 視圖名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
修改視圖:CREATE OR REPLACE VIEW 視圖名 AS SELECT [...] FROM [...];
視圖條件限制:[WITH CHECK OPTION]
視圖的操作方式用實(shí)例來說明。
新建表user_first,user_product:


創(chuàng)建視圖user_info,user_simple_info:


user_simple_info 視圖是user_first的子集,user_info是通過user_id關(guān)聯(lián)的視圖。
1.視圖的SELECT的使用:
與表的查詢方式一致,如:
SELECT a.user_a,a.user_b from user_info a

2.視圖的INSERT的使用:
(1)視圖為表的子集:
INSERT into user_simple_info(user_n,user_a) VALUES("插入",108)
視圖數(shù)據(jù)為:

表數(shù)據(jù)也同時(shí)跟新:

(2)視圖為多表關(guān)聯(lián):
INSERT into user_info(user_n,user_a,user_b) VALUES("插入",108,"化學(xué)")
插入時(shí)報(bào)錯(cuò):[Err] 1471 - The target table user_info of the INSERT is not insertable-into
無法插入!
3.視圖的UPDATE的使用:
子集視圖不再演示,可以更新。
多表關(guān)聯(lián)視圖:
更新一張表的數(shù)據(jù):
UPDATE user_info a SET a.user_a = 999 WHERE a.user_b = '語文'

發(fā)現(xiàn)視圖更新了2條,原因是更新語文這個(gè)數(shù)據(jù)時(shí),user_a來自于同一張表中的同一個(gè)數(shù)據(jù),數(shù)據(jù)源改變,導(dǎo)致修改了兩條。
更新兩張表的數(shù)據(jù):
UPDATE user_info a SET a.user_a = 999,a.user_b="haha"

發(fā)現(xiàn)無法修改!
4.視圖的DELETE的使用:
(1)視圖為表的子集:
DELETE from user_simple_info WHERE user_n = '33'
刪除后視圖數(shù)據(jù):

刪除后表數(shù)據(jù):

可見視圖數(shù)據(jù)刪除可以影響表,這前提是視圖字段是表的子集。
(2)視圖為多表關(guān)聯(lián):
DELETE from user_info WHERE user_n = '22'

無法刪除!
上面是簡(jiǎn)單的對(duì)視圖進(jìn)行增刪改查,多表關(guān)聯(lián)后的視圖,一般操作無法完成。對(duì)表的子集的視圖可以增刪改查。如果對(duì)視圖操作成功,會(huì)影響對(duì)應(yīng)表。一般要修改數(shù)據(jù)的話,可以直接操作表,從而來改變視圖數(shù)據(jù)。