MySQLビューの変更

40279 ワード

ビューの変更とは、MySQLデータベースに存在するビューを変更することです.基本テーブルの一部のフィールドが変更されると、ビューを変更して基本テーブルと一貫性を保つことができます.
基本構文
既存のビューを変更するには、ALTER VIEW文を使用します.
構文の形式は次のとおりです.
ALTER VIEW <   > AS <SELECT  >

構文の説明は次のとおりです.
	:       。              ,           。
	
	

ビューの定義を変更するには、ALTER VIEWのほか、DROP VIEW文を使用してビューを削除し、CREATE VIEW文を使用して実装することもできます.
ビューの内容の変更
ビューは仮想テーブルであり、実際のデータは基本テーブルから来ているため、ビュー内のデータを挿入、修正、削除することで、実質的に更新ビューで参照される基本テーブルのデータである.
注:ビューの変更は基本テーブルの変更です.したがって、変更時に基本テーブルのデータ定義を満たす必要があります.
一部のビューは更新可能です.すなわち,UPDATE,DELETE,INSERTなどの文を用いて基本テーブルの内容を更新することができる.更新可能なビューでは、ビュー内のローと基本テーブルのローの間に1対1の関係が必要です.
ビューを更新できないようにする特定の構造もあります.より具体的には、ビューに次のいずれかの構造が含まれている場合は、更新できません.
	     SUM()、MIN()、MAX()、COUNT()  。
	
	DISTINCT    。
	
	GROUP BY   。
	
	HAVING   。
	
	UNION   UNION ALL    。
	
	           。
	
	FROM                 。
	
	WHERE        ,   FROM      。
	
	ALGORITHM     TEMPTABLE   。

ALTER文を使用してビューview_を変更するstudents_info、入力したSQL文と実行結果を以下に示します.
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)

ユーザーは、ビューが仮想テーブルであり、データがないため、テーブル内のデータを挿入、更新、削除できます.ビューの更新時に基本テーブルに移動して更新します.ビューにレコードを追加または削除すると、実際には基本テーブルにレコードを追加または削除します.
ビュービュービューを表示するstudents_infoのデータ内容は、以下の通りです.
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)

UPDATE文を使用してビューview_を更新するstudents_info、入力したSQL文と実行結果を以下に示します.
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の内容は、以下の通りです.
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)

ビュー名の変更
ビューの名前を変更するには、まずビューを削除し、同じ定義文に従ってビューを作成し、新しいビュー名に名前を付けることができます.