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

MySQLビューの値を更新する方法|UPDATEステートメントの使い方を実例付きで解説

MySQLでは、UPDATEステートメントを使用してテーブル内の値を更新できますが、実はビュー(VIEW)に対しても同様にUPDATEステートメントで値を更新できます。構文はテーブルの場合とまったく同じで、異なるのはテーブル名を指定する箇所にビュー名を指定するという点だけです。

サンプルデータの確認

ここでは、「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)

UPDATEステートメントでビューの値を変更する

たとえば、IdがNULLになっている行(Nameが「Ram」の行)の値を別の数値に変更したい場合は、次のようなクエリを実行します。

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)

このように、Nameが「Ram」の行のIdがNULLから130に正常に更新されました。UPDATE文は通常のテーブルに対して実行する場合とまったく同じ書式で、WHERE句による条件指定もそのまま利用できます。

ビューを更新する際の注意点

すべてのビューが更新可能なわけではない点には注意が必要です。ビューが以下の条件を満たす場合、一般的にUPDATE操作が可能です。

  • 単一のテーブルまたは別の更新可能なビューを基に作成されていること
  • SUM、COUNT、AVGなどの集計関数を使用していないこと
  • DISTINCT、GROUP BY、HAVING句などを含んでいないこと
  • UNIONなどの集合演算を使用していないこと

まとめ

MySQLのビューは、仮想的なテーブルでありながら、基になるテーブルと連動しているため、UPDATEステートメントを使った値の変更が可能です。テーブルと同じ構文でビュー名を指定するだけで手軽に更新できる一方、集計関数やGROUP BYを含む複雑なビューは更新できないため、用途に応じて適切な設計を心がけましょう。

  1. MySQLで製品テーブルから製品の合計金額を計算する方法

    MySQLで製品テーブルから合計金額を算出する手順 在庫管理や売上集計などの場面では、「数量 × 単価」の合計値を求めたいケースがよくあります。MySQLでは SUM() 関数と乗算を組み合わせることで、この計算を1つのSQLクエリで簡単に実現できます。 ここでは、サンプルテーブルを作成し、実際に合計金額を計算するまでの手順を解説します。 1. テーブルの作成 まず、製品ID・数量・単価を持つテーブルを作成します。 mysql> create table DemoTable ( ProductId int NOT NULL AUTO_INCREMENT PRIMARY

  2. MySQLで1番目のテーブルの値を加算して2番目のテーブルのフィールドを更新する方法

    MySQLでは、あるテーブルの値を別のテーブルの値に加算して、フィールドを更新することができます。この記事では、ユーザー定義変数とUPDATE文を組み合わせて、1番目のテーブルの値を2番目のテーブルのすべての値に加算する方法を、サンプルコードとともに解説します。 1番目のテーブルを作成する まず、create table文を使って1番目のテーブル「DemoTable1」を作成しましょう。 mysql> create table DemoTable1    (    value int    ); Query OK, 0 rows