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

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(従業員)」テーブルを使用します。

idnametitlehired_datesalary
1Thomas CarltonSales Associate09-08-201928000
2Lisa InglesSales Associate12-09-201928000
3Victoria CarlisleSales Director04-02-201736000

このテーブルは、SQL INSERTに関するチュートリアルで作成したものです。今回は、このテーブル内のいくつかのレコードを実際に更新しながら学習を進めていきます。

SQL UPDATEの実行例

従業員のLisa Inglesが結婚し、姓が「Lisa Nelson」に変わりました。UPDATE文を使って、employeesテーブル内の彼女の名前を変更してみましょう。

UPDATE employees
SET name = 'Lisa Nelson'
WHERE id = 2;

このコマンドでは、SET句を使って「name」という1つのカラムのみを変更しています。変更が正しく反映されたかどうかを確認するため、彼女のレコードをデータベースから取得してみましょう。

idnametitlehired_datesalary
2Lisa NelsonSales Associate12-09-201928000

Lisaの姓が正しく変更されていることが確認できました。

複数のレコードを更新する

1つのUPDATE文で、テーブル内の複数の既存レコードを同時に更新することもできます。複数のレコードを扱う場合、通常はWHERE句を併用して、意図したレコードだけが更新されるように制御します。

ここで、経営陣の決定により、すべての「Sales Associate(営業担当)」という役職名を「Sales Representative(営業代表)」に変更することになったとしましょう。この変更を行うために、次のUPDATEコマンドを実行します。

UPDATE employees
SET title = 'Sales Representative'
WHERE title = 'Sales Associate';

このコマンドにより、Sales Associateである全従業員の「title」の値が「Sales Representative」に変更されます。変更結果を確認してみましょう。

idnametitlehired_datesalary
1Thomas CarltonSales Representative09-08-201928000
2Lisa NelsonSales Representative12-09-201928000
3Victoria CarlisleSales Director04-02-201736000

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%の昇給を実現しています。データベースを確認してみましょう。

idnametitlehired_datesalary
1Thomas CarltonSales Representative09-08-201929400
2Lisa NelsonSales Representative12-09-201929400
3Victoria CarlisleSales Director04-02-201737800

全従業員の給与が正常に更新されました。

まとめ

UPDATE文は、データベース内の1つ以上のレコードを更新するためのステートメントです。通常はWHERE句と組み合わせて使用し、どのレコードを更新対象とするのかを正確に指定します。WHERE句を忘れると全レコードが更新されてしまうため、実務では特に注意が必要です。

理解度を確かめるために、ぜひ次のコマンドを自分で書いてみてください。

  • すべてのSales Representativeの給与を2%増額する
  • Lisaの役職を「Senior Sales Representative」に変更する
  • Victoria Carlisleの入社日を「04-03-2017」に変更する

これであなたも、プロのようにUPDATE文を使いこなせるようになりました!

  1. SQL ServerのCURRENT_USERステートメントの使い方を徹底解説

    この記事では、SQL ServerでCURRENT_USERステートメントを使用する方法について、具体的な構文と実行例を交えながら詳しく解説します。現在のデータベースユーザー名を取得する仕組みを理解し、実務に活かせるようにしましょう。 説明 CURRENT_USERステートメントは、SQL Serverデータベースにおける現在のユーザー名を返す組み込み関数です。戻り値のデータ型は sysname であり、セッションの実行コンテキストに基づいたユーザー名が取得されます。たとえば、EXECUTE AS によって実行コンテキストが別のユーザーに切り替えられている場合は、そのユーザーの名前が返されます

  2. SQL ServerのIF...ELSE文とは?基本構文と実践例をわかりやすく解説

    他のプログラミング言語と同様に、SQL Serverでも条件分岐を行うためのIF...ELSEコマンドが用意されています。本記事では、IF...ELSE文の構文の使い方を、わかりやすい具体例とともに詳しく解説します。 概要 SQL ServerにおけるIF...ELSE文は、条件に応じて処理を分岐させるために使用されるステートメントです。条件がTRUE(真)と評価された場合は一方的な処理を実行し、FALSE(偽)と評価された場合には別の処理を実行します。 IF...ELSE文の構文 SQL ServerでIF...ELSEによる分岐処理を行うには、以下の構文に従って記述します。 IF 条件式{