【SQL】これで完璧!UPDATE文の重要テクニックを一覧まとめ

みなさんこんにちは!

今回はSQL文の最重要機能の一つUPDATEについて見ていきましょう。UPDATEは既存データの更新を行うための命令です。とても重要なコマンドなので、ここで完全にマスターしておきましょう。

ミスって、全データの内容を破壊してしまってからでは遅いですからね…顧客データなど、重要な部分を触る可能性のある人は、特に入念に学んでおきましょう。

  • [基本]更新に使うSQLを覚えよう!
  • [基本]「UPDATE」の具体的な使い方!
  • [応用]計算式もつかえる!
  • [応用]JOINを使ってデータを更新!
  • [応用]「CASE」と組み合わせて条件文も使える!

まずは基本的な使い方から入っていき…他のコマンドと組み合わせた応用的な話も見ていきましょう。それではよろしくお願いいたします。

目次

更新関係に使うSQLを覚えよう!

SQLのデータ更新関係の命令は主に以下の3種類です。

UPDATE・INSERT・DELETE

これらを理解することで「UPDATE」がどこまでのことをできるのかを、知ることができると思いますので、最初に見ていきましょう。

「UPDATE文」で既存の更新

今回の主役UPDATEです。この命令は既存データの更新を行えます。新規作成や削除は行えない点に注意しましょう。詳細はまた後ほど説明します。

「INSERT文」で新規追加

INSERTはデータの新規作成を行う命令です。ユーザーを追加する時などに使用することになるでしょう。データの更新などは行えません。

「DELETE文」で削除

DELETEはデータの削除を行う命令です。扱い的には、一番気をつけなければならない命令でしょう。こちらのコマンドの詳細は以下にまとめてあります。

更新系処理まとめ

  • 新規データの追加・・・INSERT
  • 既存データの更新・・・UPDATE
  • 既存データの削除・・・DELETE

つまりSQL文ではこのように使い分けることになります。今回学ぶ「UPDATE」は、追加・削除は行えませんので注意しましょう。もしそれらが必要な時は「INSERT」や「DELETE」を使用しましょう。

今回例題で使用するテーブル

今回は以下のテーブルを使用して、例題を見ていきましょう。

userテーブル:

+------+--------+-------+
| id   | name   | point |
+------+--------+-------+
|    1 | 山田   |    80 |
|    2 | 鈴木   |    90 |
|    3 | 加藤   |    60 |
|    4 | 田中   |    70 |
+------+--------+-------+

シンプルにidと名前とポイントが記録されているuserテーブルです。

「UPDATE」の使い方

それでは今回の主役「UPDATE」について見てきます。

基本形

基本的な使い方は以下の通りです。

UPDATE [テーブル名] SET [更新処理];

テーブル名を指定して、更新処理を書くわけですね!早速実例を見てみましょう。

実例で見てみよう

以下は全員のポイントを0にする実例です。

実行命令:

UPDATE user SET point = 0;

実行のあと全表示した結果:

+------+--------+-------+
| id   | name   | point |
+------+--------+-------+
|    1 | 山田   |     0 |
|    2 | 鈴木   |     0 |
|    3 | 加藤   |     0 |
|    4 | 田中   |     0 |
+------+--------+-------+

ちゃんと全員の点数が0になっています!

「WHERE」で条件式をつけよう!

UPDATEの基本は、理解できたと思います。

しかしこれでは、毎回全員に更新がかかってしまいます。それを解決するのが、条件を指定するWHERE句です。

基本形

基本的な使い方は、UPDATEの後ろに「WHERE [条件式]」をつけるだけです。

実行命令:

UPDATE [テーブル名] SET [更新処理] WHERE [条件式];

実例で見てみよう

今回は実例として、山田さんだけ点数を100ポイントにしてみましょうか。

実行命令:

UPDATE user SET point = 100 WHERE name = "山田";

実行のあと全表示した結果:

+------+--------+-------+
| id   | name   | point |
+------+--------+-------+
|    1 | 山田   |   100 |
|    2 | 鈴木   |     0 |
|    3 | 加藤   |     0 |
|    4 | 田中   |     0 |
+------+--------+-------+

無事一人だけ100になっていますね!このように条件を指定するのが、WHEREです。

計算式もつかえる!

「山田さんの点数を倍にする」例えばそんな計算式を入れることも可能です。

実行命令:

UPDATE user SET point = point * 2 WHERE name = "山田";

実行のあと全表示した結果:

+------+--------+-------+
| id   | name   | point |
+------+--------+-------+
|    1 | 山田   |   200 |
|    2 | 鈴木   |     0 |
|    3 | 加藤   |     0 |
|    4 | 田中   |     0 |
+------+--------+-------+

ちゃんと倍になっていますね!このように、更新時処理に計算式を入れることも可能です。

JOINを使ってデータを更新!

JOINとはテーブル同士を連結させる命令です。詳細は以下のリンクを読んでみてください。

今回は本筋から外れるため本当にシンプルに書きますが…JOINを使用してテーブルを連結しつつUPDATEを行うことも可能です。連結のためにもう1テーブル用意しましょう。

point_masterテーブル:

+------+-------+
| id   | point |
+------+-------+
|    1 |    10 |
|    2 |    20 |
|    3 |    30 |
|    4 |    40 |
+------+-------+

このpoint_masterテーブルと、userテーブルを連携して、UPDATEをしてみましょう。処理としては、point_masterのpointを、同一idのユーザーのpointに上書きしてみましょう。

実行命令:

UPDATE user
INNER JOIN point_master ON user.id = point_master.id
SET user.point = point_master.point;

実行のあと全表示した結果:

+------+--------+-------+
| id   | name   | point |
+------+--------+-------+
|    1 | 山田   |    10 |
|    2 | 鈴木   |    20 |
|    3 | 加藤   |    30 |
|    4 | 田中   |    40 |
+------+--------+-------+

うまく行けましたね!

※またこの時のUPDATEの書き方は、環境によって少し変わってきます。もしこのサンプルの形式でうまくいかなかったら、Googleで検索し、自分の環境に合わせた書き方をしましょう。

「CASE」と組み合わせて条件文も使える!

CASEは、SQLで条件分岐を書くことができるすごい命令です。詳細は以下のリンクを読んでみてください。CASEとUPDATEを組み合わせた使用方法もリンク先にまとめてあります。

まとめ

今回はUPDATEについて見てきました。SQLの中でもっとも重要な機能の一つです。ぜひしっかり理解しておきましょう。

簡単に使用するだならシンプルな命令ですが、いろいろな命令と組み合わせると奥の深い命令ですよ!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次