SQL UPDATE文の使い方を徹底解説!基本構文から実践例まで
SQL UPDATE文の使い方
データベースの中核的な機能のひとつが、保存された値を更新できることです。データベース内の任意のレコードの値は、いつでも自由に変更できます。SQLデータベース内の値を変更する際に使われるのが、SQLのUPDATE文です。
このガイドでは、SQL UPDATE文とは何か、そしてその具体的な使い方について解説します。実際のコード例を交えながら、UPDATE文がどのように動作するのかをわかりやすく見ていきましょう。
SQL UPDATEとは?
UPDATE文は、SQLテーブル内の既存データを更新するためのステートメントです。
テーブル内のすべてのレコードを一括で変更することもできますし、特定の条件(または複数の条件)に一致するレコードだけを対象にすることも可能です。典型的なSQL UPDATEクエリの構造は以下のとおりです。
UPDATE table
SET column1 = value1, column2 = value2…
WHERE condition(s);
「table」には、更新したいレコードが含まれるテーブル名を指定します。
SETキーワード以降には、「更新対象のカラム名 = 代入したい値」という形式で記述します。複数のカラムを同時に更新したい場合は、それぞれの指定をカンマ(,)で区切ります。
それでは、SQL UPDATE文の具体例を見ていきましょう。ここでは、以下のようなデータを持つ「employees(従業員)」テーブルを使用します。
| id | name | title | hired_date | salary |
| 1 | Thomas Carlton | Sales Associate | 09-08-2019 | 28000 |
| 2 | Lisa Ingles | Sales Associate | 12-09-2019 | 28000 |
| 3 | Victoria Carlisle | Sales Director | 04-02-2017 | 36000 |
このテーブルは、SQL INSERTに関するチュートリアルで作成したものです。今回は、このテーブル内のいくつかのレコードを実際に更新しながら学習を進めていきます。
SQL UPDATEの実行例
従業員のLisa Inglesが結婚し、姓が「Lisa Nelson」に変わりました。UPDATE文を使って、employeesテーブル内の彼女の名前を変更してみましょう。
UPDATE employees
SET name = 'Lisa Nelson'
WHERE id = 2;
このコマンドでは、SET句を使って「name」という1つのカラムのみを変更しています。変更が正しく反映されたかどうかを確認するため、彼女のレコードをデータベースから取得してみましょう。
| id | name | title | hired_date | salary |
| 2 | Lisa Nelson | Sales Associate | 12-09-2019 | 28000 |
Lisaの姓が正しく変更されていることが確認できました。
複数のレコードを更新する
1つのUPDATE文で、テーブル内の複数の既存レコードを同時に更新することもできます。複数のレコードを扱う場合、通常はWHERE句を併用して、意図したレコードだけが更新されるように制御します。
ここで、経営陣の決定により、すべての「Sales Associate(営業担当)」という役職名を「Sales Representative(営業代表)」に変更することになったとしましょう。この変更を行うために、次のUPDATEコマンドを実行します。
UPDATE employees
SET title = 'Sales Representative'
WHERE title = 'Sales Associate';
このコマンドにより、Sales Associateである全従業員の「title」の値が「Sales Representative」に変更されます。変更結果を確認してみましょう。
| id | name | title | hired_date | salary |
| 1 | Thomas Carlton | Sales Representative | 09-08-2019 | 28000 |
| 2 | Lisa Nelson | Sales Representative | 12-09-2019 | 28000 |
| 3 | Victoria Carlisle | Sales Director | 04-02-2017 | 36000 |
Thomas CarltonとLisa Nelsonの役職が変更されました。一方、Victoria CarlisleはSales Directorであるため、WHERE句の条件に合致せず、彼女の役職は変更されていません。
すべてのレコードを更新する
重要なポイントとして、UPDATE文はデフォルトではテーブル内のすべてのレコードを更新します。意図しない全件更新を防ぐには、必ずWHERE句で条件を指定する必要があります。
ここで、会社の全従業員に5%の昇給が決まったとしましょう。この変更を行うために、次のUPDATE文を使用します。
UPDATE employees
SET salary = salary * 1.05;
このコマンドは、WHERE句がないため、データベース内の全レコードの「salary」の値を変更します。乗算演算子(*)を使って全従業員の給与に1.05を掛けることで、5%の昇給を実現しています。データベースを確認してみましょう。
| id | name | title | hired_date | salary |
| 1 | Thomas Carlton | Sales Representative | 09-08-2019 | 29400 |
| 2 | Lisa Nelson | Sales Representative | 12-09-2019 | 29400 |
| 3 | Victoria Carlisle | Sales Director | 04-02-2017 | 37800 |
全従業員の給与が正常に更新されました。
まとめ
UPDATE文は、データベース内の1つ以上のレコードを更新するためのステートメントです。通常はWHERE句と組み合わせて使用し、どのレコードを更新対象とするのかを正確に指定します。WHERE句を忘れると全レコードが更新されてしまうため、実務では特に注意が必要です。
理解度を確かめるために、ぜひ次のコマンドを自分で書いてみてください。
- すべてのSales Representativeの給与を2%増額する
- Lisaの役職を「Senior Sales Representative」に変更する
- Victoria Carlisleの入社日を「04-03-2017」に変更する
これであなたも、プロのようにUPDATE文を使いこなせるようになりました!
-
SQL ServerのCURRENT_USERステートメントの使い方を徹底解説
この記事では、SQL ServerでCURRENT_USERステートメントを使用する方法について、具体的な構文と実行例を交えながら詳しく解説します。現在のデータベースユーザー名を取得する仕組みを理解し、実務に活かせるようにしましょう。 説明 CURRENT_USERステートメントは、SQL Serverデータベースにおける現在のユーザー名を返す組み込み関数です。戻り値のデータ型は sysname であり、セッションの実行コンテキストに基づいたユーザー名が取得されます。たとえば、EXECUTE AS によって実行コンテキストが別のユーザーに切り替えられている場合は、そのユーザーの名前が返されます
-
SQL ServerのIF...ELSE文とは?基本構文と実践例をわかりやすく解説
他のプログラミング言語と同様に、SQL Serverでも条件分岐を行うためのIF...ELSEコマンドが用意されています。本記事では、IF...ELSE文の構文の使い方を、わかりやすい具体例とともに詳しく解説します。 概要 SQL ServerにおけるIF...ELSE文は、条件に応じて処理を分岐させるために使用されるステートメントです。条件がTRUE(真)と評価された場合は一方的な処理を実行し、FALSE(偽)と評価された場合には別の処理を実行します。 IF...ELSE文の構文 SQL ServerでIF...ELSEによる分岐処理を行うには、以下の構文に従って記述します。 IF 条件式{