mysql視圖怎么修改表中信息

mysql中,視圖是一個虛擬表,實際的數據來自于基本表,所以通過插入、修改和刪除操作更新視圖中的數據信息,實質上就是在更新視圖所引用的基本表的數據信息;語法格式“ALTER VIEW AS ”。

mysql視圖怎么修改表中信息

(推薦教程:mysql視頻教程

修改視圖內容

視圖是一個虛擬表,實際的數據來自于基本表,所以通過插入、修改和刪除操作更新視圖中的數據,實質上是在更新視圖所引用的基本表的數據。

注意:對視圖的修改就是對基本表的修改,因此在修改時,要滿足基本表的數據定義。

基本語法

可以使用 ALTER VIEW 語句來對已有的視圖進行修改。

語法格式如下:

ALTER?VIEW??AS?<select></select>

語法說明如下:

  • :指定視圖的名稱。該名稱在數據庫中必須是唯一的,不能與其他表或視圖同名。

需要注意的是,對于 ALTER VIEW 語句的使用,需要用戶具有針對視圖的 CREATE VIEW 和 DROP 權限,以及由 SELECT 語句選擇的每一列上的某些權限。

修改視圖的定義,除了可以通過 ALTER VIEW 外,也可以使用 DROP VIEW 語句先刪除視圖,再使用 CREATE VIEW 語句來實現。

某些視圖是可更新的。也就是說,可以使用 UPDATE、DELETE 或 INSERT 等語句更新基本表的內容。對于可更新的視圖,視圖中的行和基本表的行之間必須具有一對一的關系。

還有一些特定的其他結構,這些結構會使得視圖不可更新。更具體地講,如果視圖包含以下結構中的任何一種,它就是不可更新的:

  • 聚合函數 SUM()、MIN()、MAX()、COUNT() 等。

  • DISTINCT 關鍵字。

  • GROUP BY 子句。

  • HAVING 子句。

  • UNION 或 UNION ALL 運算符。

  • 位于選擇列表中的子查詢。

  • FROM 子句中的不可更新視圖或包含多個表。

  • WHERE 子句中的子查詢,引用 FROM 子句中的表。

  • ALGORITHM 選項為 TEMPTABLE(使用臨時表總會使視圖成為不可更新的)的時候。

【實例 1】使用 ALTER 語句修改視圖 view_students_info,輸入的 SQL 語句和執行結果如下所示。

mysql&gt;?ALTER?VIEW?view_students_info ????-&gt;?AS?SELECT?id,name,age ????-&gt;?FROM?tb_students_info; Query?OK,?0?rows?affected?(0.07?sec) mysql&gt;?DESC?view_students_info; +-------+-------------+------+-----+---------+-------+ |?Field?|?Type????????|?Null?|?Key?|?Default?|?Extra?| +-------+-------------+------+-----+---------+-------+ |?id????|?int(11)?????|?NO???|?????|?0???????|???????| |?name??|?varchar(45)?|?YES??|?????|?NULL????|???????| |?age???|?int(11)?????|?YES??|?????|?NULL????|???????| +-------+-------------+------+-----+---------+-------+ 3?rows?in?set?(0.03?sec)

用戶可以通過視圖來插入、更新、刪除表中的數據,因為視圖是一個虛擬的表,沒有數據。通過視圖更新時轉到基本表上進行更新,如果對視圖增加或刪除記錄,實際上是對基本表增加或刪除記錄。

查看視圖 view_students_info 的數據內容,如下所示。

mysql&gt;?SELECT?*?FROM?view_students_info; +----+--------+------+ |?id?|?name???|?age??| +----+--------+------+ |??1?|?Dany???|???24?| |??2?|?Green??|???23?| |??3?|?Henry??|???23?| |??4?|?Jane???|???22?| |??5?|?Jim????|???24?| |??6?|?John???|???21?| |??7?|?Lily???|???22?| |??8?|?Susan??|???23?| |??9?|?Thomas?|???22?| |?10?|?Tom????|???23?| +----+--------+------+ 10?rows?in?set?(0.00?sec)

【實例 2】使用 UPDATE 語句更新視圖 view_students_info,輸入的 SQL 語句和執行結果如下所示。

mysql&gt;?UPDATE?view_students_info ????-&gt;?SET?age=25?WHERE?id=1; Query?OK,?0?rows?affected?(0.24?sec) Rows?matched:?1??Changed:?0??Warnings:?0 mysql&gt;?SELECT?*?FROM?view_students_info; +----+--------+------+ |?id?|?name???|?age??| +----+--------+------+ |??1?|?Dany???|???25?| |??2?|?Green??|???23?| |??3?|?Henry??|???23?| |??4?|?Jane???|???22?| |??5?|?Jim????|???24?| |??6?|?John???|???21?| |??7?|?Lily???|???22?| |??8?|?Susan??|???23?| |??9?|?Thomas?|???22?| |?10?|?Tom????|???23?| +----+--------+------+ 10?rows?in?set?(0.00?sec)

查看基本表 tb_students_info 和視圖 v_students_info 的內容,如下所示。

mysql&gt;?SELECT?*?FROM?tb_students_info; +----+--------+---------+------+------+--------+------------+ |?id?|?name???|?dept_id?|?age??|?sex??|?height?|?login_date?| +----+--------+---------+------+------+--------+------------+ |??1?|?Dany???|???????1?|???25?|?F????|????160?|?2015-09-10?| |??2?|?Green??|???????3?|???23?|?F????|????158?|?2016-10-22?| |??3?|?Henry??|???????2?|???23?|?M????|????185?|?2015-05-31?| |??4?|?Jane???|???????1?|???22?|?F????|????162?|?2016-12-20?| |??5?|?Jim????|???????1?|???24?|?M????|????175?|?2016-01-15?| |??6?|?John???|???????2?|???21?|?M????|????172?|?2015-11-11?| |??7?|?Lily???|???????6?|???22?|?F????|????165?|?2016-02-26?| |??8?|?Susan??|???????4?|???23?|?F????|????170?|?2015-10-01?| |??9?|?Thomas?|???????3?|???22?|?M????|????178?|?2016-06-07?| |?10?|?Tom????|???????4?|???23?|?M????|????165?|?2016-08-05?| +----+--------+---------+------+------+--------+------------+ 10?rows?in?set?(0.00?sec)  mysql&gt;?SELECT?*?FROM?v_students_info; +------+--------+------+-------+-------+----------+------------+ |?s_id?|?s_name?|?d_id?|?s_age?|?s_sex?|?s_height?|?s_date?????| +------+--------+------+-------+-------+----------+------------+ |????1?|?Dany???|????1?|????25?|?F?????|??????160?|?2015-09-10?| |????2?|?Green??|????3?|????23?|?F?????|??????158?|?2016-10-22?| |????3?|?Henry??|????2?|????23?|?M?????|??????185?|?2015-05-31?| |????4?|?Jane???|????1?|????22?|?F?????|??????162?|?2016-12-20?| |????5?|?Jim????|????1?|????24?|?M?????|??????175?|?2016-01-15?| |????6?|?John???|????2?|????21?|?M?????|??????172?|?2015-11-11?| |????7?|?Lily???|????6?|????22?|?F?????|??????165?|?2016-02-26?| |????8?|?Susan??|????4?|????23?|?F?????|??????170?|?2015-10-01?| |????9?|?Thomas?|????3?|????22?|?M?????|??????178?|?2016-06-07?| |???10?|?Tom????|????4?|????23?|?M?????|??????165?|?2016-08-05?| +------+--------+------+-------+-------+----------+------------+ 10?rows?in?set?(0.00?sec)

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享