UPDATE (SQL)

SQL UPDATEステートメントの詳細解説



SQLの`UPDATE`ステートメントは、データベース内のテーブルに格納されたデータを変更するための重要な命令です。このステートメントは、SQLのデータ操作言語(DML)の一部であり、テーブル内の既存レコードの値を更新するために使用されます。

基本構文



`UPDATE`ステートメントの基本的な構文は以下の通りです。

sql
UPDATE テーブル名
SET 列名1 = 値1 [, 列名2 = 値2, ...]
[WHERE 条件式];


  • - `UPDATE テーブル名`: 更新対象のテーブルを指定します。
  • - `SET 列名1 = 値1 [, 列名2 = 値2, ...]`: 更新する列とその新しい値を指定します。複数の列を同時に更新できます。
  • - `[WHERE 条件式]`: オプションで、更新するレコードを絞り込むための条件を指定します。`WHERE`句を省略した場合、テーブルのすべてのレコードが更新されます。`WHERE`句を指定した場合、条件に一致するレコードのみが更新されます。

更新の条件と権限



`UPDATE`ステートメントを実行する際には、いくつかの重要な条件があります。

1. 権限: ユーザーは、更新対象のテーブルおよび列に対する更新権限を持っている必要があります。
2. 制約: 更新後のデータが、`PRIMARY KEY`制約、一意性制約、`CHECK`制約、`NOT NULL`制約などに違反しないようにする必要があります。これらの制約に違反すると、更新処理は失敗します。

具体例



基本的な更新


例えば、テーブル`t`があり、列`c2`の値が`'a'`であるレコードの列`c1`の値を`1`に設定するには、次のように記述します。

sql
UPDATE t SET c1 = 1 WHERE c2 = 'a';



値の加算


列`c1`の値に`1`を加算する場合は、次のように記述します。

sql
UPDATE t SET c1 = c1 + 1 WHERE c2 = 'a';


複数列の更新


一つの`UPDATE`ステートメントで複数の列を更新することも可能です。以下の例では、テーブル`t`の列`c1`に`1`を、列`c2`に`2`を設定します。

sql
UPDATE t SET c1 = 1, c2 = 2;


他テーブルとの結合による更新



`UPDATE`ステートメントは、他のテーブルとの結合結果に基づいてレコードを更新することも可能です。これには、サブクエリを使用する方法と、`SELECT`ステートメントに似た結合式を使用する方法があります。

サブクエリを用いた更新


例えば、テーブル`t1`の列`a2`の値が、テーブル`t2`の列`b1`の値が`0`であるレコードの列`b2`の値のいずれかと一致する場合に、テーブル`t1`の列`a1`を`2`に設定するには、次のようなサブクエリを使用できます。

sql
UPDATE t1
SET a1 = 2
WHERE a2 IN (SELECT b2 FROM t2 WHERE b1 = 0);


結合式を用いた更新


同様の更新を結合式を用いて行う場合、次のように記述できます。

sql
UPDATE t1
SET t1.a1 = 2
FROM t2
WHERE t1.a2 = t2.b2 AND t2.b1 = 0;


まとめ



`UPDATE`ステートメントは、SQLにおけるデータの変更操作の中核をなすものであり、データの更新、修正、および変換を行うために不可欠です。適切に使用することで、データベース内の情報を正確かつ効率的に管理できます。ただし、`WHERE`句の使用を怠ると意図しないデータ変更につながるため、慎重な使用が求められます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。