ホームページ  >  記事  >  データベース  >  mysqlビューでテーブルの情報を変更する方法

mysqlビューでテーブルの情報を変更する方法

青灯夜游
青灯夜游オリジナル
2020-10-13 15:33:386467ブラウズ

mysql では、ビューは仮想テーブルであり、実際のデータは基本テーブルから取得されます。したがって、挿入、変更、削除操作を通じてビュー内のデータ情報を更新することは、基本的に参照される基本テーブルを更新することになります。データ情報; 構文形式「ALTER VIEW AS 语句>

mysqlビューでテーブルの情報を変更する方法

(推奨チュートリアル:

mysql ビデオ チュートリアル )

ビューの内容を変更する

ビューは仮想テーブルであり、実際のデータは基本テーブルから取得されるため、挿入、変更、削除操作によるビュー内のデータの更新は基本的に、ビューによって参照されるベース テーブル内のデータを更新します。

注: ビューの変更は基本テーブルの変更であるため、変更する場合は基本テーブルのデータ定義を満たす必要があります。

基本構文

ALTER VIEW ステートメントを使用して、既存のビューを変更できます。

構文形式は次のとおりです:

ALTER VIEW <视图名> AS <SELECT语句>

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

  • b1f95d94e72e8b0dcea85d1e65e6a935: ビューの名前を指定します。ビュー。名前はデータベース内で一意である必要があり、別のテーブルまたはビューと同じ名前を持つことはできません。

  • 6238f2ef3988923b3a2d5244999c62fb: SELECT ステートメントを指定してビューを作成します。ビューは、複数のベース テーブルまたはソース ビューのクエリに使用できます。

ALTER VIEW ステートメントを使用するには、ユーザーがビューに対する CREATE VIEW 権限と DROP 権限、および 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 の場合 (一時テーブルを使用すると、ビューは常に更新不能になります)。

[例 1] 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)

ビューはデータのない仮想テーブルであるため、ユーザーはビューを通じてテーブル内のデータを挿入、更新、削除できます。ビュー経由で更新する場合、実表に更新が行われますが、ビューにレコードを追加または削除すると、実際には実表にレコードが追加または削除されます。

次に示すように、ビュー view_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)

【例2】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 を表示します。

rree

以上がmysqlビューでテーブルの情報を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。