新聞中心

企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對外擴(kuò)展宣傳的重要窗口,一個(gè)合格的網(wǎng)站不僅僅能為公司帶來巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺,成都創(chuàng)新互聯(lián)面向各種領(lǐng)域:成都柴油發(fā)電機(jī)等成都網(wǎng)站設(shè)計(jì)、全網(wǎng)整合營銷推廣解決方案、網(wǎng)站設(shè)計(jì)等建站排名服務(wù)。
基本語法
可以使用 ALTER VIEW 語句來對已有的視圖進(jìn)行修改。
語法格式如下:
ALTER VIEW <視圖名> AS
語法說明如下:
-
<視圖名>:指定視圖的名稱。該名稱在數(shù)據(jù)庫中必須是唯一的,不能與其他表或視圖同名。 -
:指定創(chuàng)建視圖的 SELECT 語句,可用于查詢多個(gè)基礎(chǔ)表或源視圖。
需要注意的是,對于 ALTER VIEW 語句的使用,需要用戶具有針對視圖的 CREATE VIEW 和 DROP 權(quán)限,以及由 SELECT 語句選擇的每一列上的某些權(quán)限。
修改視圖的定義,除了可以通過 ALTER VIEW 外,也可以使用 DROP VIEW 語句先刪除視圖,再使用 CREATE VIEW 語句來實(shí)現(xiàn)。
修改視圖內(nèi)容
視圖是一個(gè)虛擬表,實(shí)際的數(shù)據(jù)來自于基本表,所以通過插入、修改和刪除操作更新視圖中的數(shù)據(jù),實(shí)質(zhì)上是在更新視圖所引用的基本表的數(shù)據(jù)。 某些視圖是可更新的。也就是說,可以使用 UPDATE、DELETE 或 INSERT 等語句更新基本表的內(nèi)容。對于可更新的視圖,視圖中的行和基本表的行之間必須具有一對一的關(guān)系。
還有一些特定的其他結(jié)構(gòu),這些結(jié)構(gòu)會使得視圖不可更新。更具體地講,如果視圖包含以下結(jié)構(gòu)中的任何一種,它就是不可更新的:
- 聚合函數(shù) SUM()、MIN()、MAX()、COUNT() 等。
- DISTINCT 關(guān)鍵字。
- GROUP BY 子句。
- HAVING 子句。
- UNION 或 UNION ALL 運(yùn)算符。
- 位于選擇列表中的子查詢。
- FROM 子句中的不可更新視圖或包含多個(gè)表。
- WHERE 子句中的子查詢,引用 FROM 子句中的表。
- ALGORITHM 選項(xiàng)為 TEMPTABLE(使用臨時(shí)表總會使視圖成為不可更新的)的時(shí)候。
【實(shí)例 1】使用 ALTER 語句修改視圖 view_students_info,輸入的 SQL 語句和執(zhí)行結(jié)果如下所示。
mysql> ALTER VIEW view_students_info
-> AS SELECT id,name,age
-> FROM tb_students_info;
Query OK, 0 rows affected (0.07 sec)
mysql> 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)
用戶可以通過視圖來插入、更新、刪除表中的數(shù)據(jù),因?yàn)橐晥D是一個(gè)虛擬的表,沒有數(shù)據(jù)。通過視圖更新時(shí)轉(zhuǎn)到基本表上進(jìn)行更新,如果對視圖增加或刪除記錄,實(shí)際上是對基本表增加或刪除記錄。
查看視圖 view_students_info 的數(shù)據(jù)內(nèi)容,如下所示。
mysql> 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)
【實(shí)例 2】使用 UPDATE 語句更新視圖 view_students_info,輸入的 SQL 語句和執(zhí)行結(jié)果如下所示。
mysql> UPDATE view_students_info
-> SET age=25 WHERE id=1;
Query OK, 0 rows affected (0.24 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> 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 的內(nèi)容,如下所示。
mysql> 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> 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)
修改視圖名稱
修改視圖的名稱可以先將視圖刪除,然后按照相同的定義語句進(jìn)行視圖的創(chuàng)建,并命名為新的視圖名稱。
文章名稱:MySQL修改視圖(ALTERVIEW)
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/ccesojd.html


咨詢
建站咨詢
