MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでビューの値を更新すると、ベーステーブルや関連するビューにも同じ変更が反映されるのか?

ビューの更新はベーステーブルにも反映される

はい、MySQLではビュー内の値を更新すると、その変更はベーステーブルにも、さらにそのビューから派生した他のビューにも自動的に反映されます。

ここでは、以下のデータを持つテーブル「student_info」を例にして具体的に説明します。

mysql> Select * from student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Chandigarh | Literature |
| 125  | Raman   | Shimla     | Computers  |
| NULL | Ram     | Jhansi     | Computers  |
+------+---------+------------+------------+
4 rows in set (0.00 sec)

ベーステーブルから作成したビュー「Info」

次に、テーブル「student_info」を元に作成されたビュー「Info」の内容を確認します。

mysql> Select * from Info;
+------+---------+------------+
| Id   | Name    | Subject    |
+------+---------+------------+
| 101  | YashPal | History    |
| 105  | Gaurav  | Literature |
| 125  | Raman   | Computers  |
| NULL | Ram     | Computers  |
+------+---------+------------+
4 rows in set (0.00 sec)

ビュー「Info」の値を更新する

以下のクエリを実行して、ビュー「Info」に対して更新操作を行います。

mysql> Update info set id = 130 where Name = 'Ram';
Query OK, 1 row affected (0.88 sec)

mysql> Select * from Info;
+------+---------+------------+
| Id   | Name    | Subject    |
+------+---------+------------+
| 101  | YashPal | History    |
| 105  | Gaurav  | Literature |
| 125  | Raman   | Computers  |
| 130  | Ram     | Computers  |
+------+---------+------------+
4 rows in set (0.00 sec)

上記の結果セットから、ビュー「Info」の値が更新されたことがわかります。

ベーステーブルへの反映を確認する

mysql> Select * from student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Chandigarh | Literature |
| 125  | Raman   | Shimla     | Computers  |
| 130  | Ram     | Jhansi     | Computers  |
+------+---------+------------+------------+
4 rows in set (0.00 sec)

この結果セットを見ると、ビュー「info」を更新した時点で、ベーステーブル「student_info」も同時に更新されていることが確認できます。

ビューから派生したビューにも反映される

さらに、ビュー「info」を元に作成された別のビュー「info_less」も、ビュー「info」の更新に合わせて自動的に更新されています。

mysql> Select * from info_less;
+------+-------+-----------+
| Id   | Name  | Subject   |
+------+-------+-----------+
| 125  | Raman | Computers |
| 130  | Ram   | Computers |
+------+-------+-----------+
2 rows in set (0.00 sec)

このように、MySQLのビューは実データを持たない仮想的なテーブルであるため、ビューに対する更新操作は直接ベーステーブルに適用されます。その結果、同じベーステーブルを参照するすべてのビューにも変更が連動して反映されるという仕組みになっています。

  1. 【MySQL】単一のUPDATE文でテーブルのすべての列を特定の値に一括設定する方法

    MySQLでは、UPDATE文のSET句に「列名=値」をカンマ区切りで並べることで、単一のクエリだけでテーブルの複数の列(実質的にすべての列)を特定の値に同時に設定できます。この記事では、サンプルテーブルを使いながら具体的な手順を解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable ( ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientName varchar(40), ClientAge int,

  2. 【MySQL】GROUP BYとHAVING句で同じテーブル内の共通する値を持つ行を抽出する方法

    はじめにMySQLで、同じテーブル内に登録された複数の行の中から、特定の値が繰り返し登場するデータを抽出したいケースはよくあります。たとえば、「同じIDが何度も出現しているレコードを見つけたい」といった場合です。こうした処理には、GROUP BY句とHAVING句を組み合わせるのが効果的です。本記事では、実際のSQLコードと実行結果をもとに、その手順をわかりやすく解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。ここでは「Id」と「Name」の2つのカラムを持つシンプルなテーブルを用意します。mysql> create table DemoTable