SQL│UPDATE文でテーブルのデータを更新する(上書き更新)

今回は、SQLのUPDATE文を使ってテーブルのデータを更新する方法を説明します。

RDBMSを運営するうえで、UPDATE文は基本かつ使用頻度の高いSQL文です。たとえば、商品マスタに登録されている商品の単価が変更になった場合や、社員マスタに登録されている給与ランクや所属部署、退職日といったデータの更新は、必ず必要になるためです。

この記事では、UPDATE文でテーブルのデータを更新する基本文法と、実際にMySQLとPostgreSQLでデータ更新を実行する実画像を用いて説明します。

目次

SQL_データの更新(UPDATE文)

この記事で説明するUPDATE文を使ったデータの更新は、以前の記事で作成したテーブルを使います。参考までに紹介しておきます。(記事内ではテーブル名をEmployeeで作成していますが、当記事ではテーブル名をWorkerに変更しています)

サンプルで使用するテーブル

当記事でSQLのUPDATE文を実行するにあたっては、下記のテーブルを使います。このテーブルに対して、UPDATE文を実行し、データを更新します。

テーブル名:Worker
(使用RDBMS:MySQL)

データ更新のUPDATE文

RDBMS上に作成したテーブルのデータを更新するときには、[UPDATE]というSQL文を実行します。

基本文法

UPDATE テーブル名 SET 更新する列名 = 更新後の値 WHERE キーの列名 = キー;

実際のUPDATE文

  • テーブル名・・・・Worker
  • 更新対象・・・・worker_idが10041
  • 更新列名・・・wage_rank
  • 更新後の値・・4

たとえば、テーブル[Worker]に登録されている「社員番号10041の給与ランクの値を4に変更する場合」には、下記のようにSQL文を記述します。

UPDATE Worker SET wage_rank = 4 WHERE worker_id = 10041;

WHEREがない場合は全件更新

前述したように、テーブル内の特定のデータ更新をする場合には、対象レコードを特定するためのWHERE区が必須です。

WHEREがない場合は、エラーが発生する訳ではなく、該当列のすべてのレコードが更新されますので、注意が必要です。

UPDATE Worker SET wage_rank = 4 WHERE worker_id = 10041;--WHEREで特定しているSQL文
UPDATE Worker SET wage_rank = 4;--WHEREで特定していないSQL文
UPDATE Worker SET wage_rank = 4;
(WHEREがないため、wage_rankが全レコード更新されてしまった)

実例_MySQLの[UPDATE]

実際のRDBMS、MySQLでUPDATE文を実行してテーブルのデータを更新した実画像を紹介します。

データを更新_UPDATE

UPDATE Worker SET wage_rank = 4 WHERE worker_id = 10041;

実例_PostgreSQLの[UPDATE]

実際のRDBMS、PostgreSQLでUPDATE文を実行してテーブルのデータを更新した実画像を紹介します。

データを更新_UPDATE

UPDATE Worker SET wage_rank = 4 WHERE worker_id = 10041;

あとがき

今回は、UPDATE文で既存のテーブルのデータを更新する方法について記事にしました。

RDBMSにおいては、データの登録と共にデータの更新は必須の命令文になります。難しい構文ではありませんので、本日から使いこなせることと思います。

当サイトでは引き続き、SQL関連の情報を発信していきますので、またご覧いただければ幸いです。

目次