MySQL でデータの更新 (UPDATE)

ここでは MySQL でテーブルのデータを更新 (UPDATE) する方法をご説明します。

サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。

UPDATE 文でテーブルのデータを更新する

MySQL でテーブルのデータを更新するには UPDATE 文を使います。

テーブルのレコードを更新する、基本の UPDATE 文の構文は次の通りです。

UPDATE  テーブル名
SET     カラム名1 = 値1,
        カラム名2 = 値2,
        カラム名3 = 値3,
        ...
WHERE   条件文;

条件文に合致するレコードのカラム1 の値が値1 に、カラム2 は値2 に ... と更新されます。

デフォルトでは Safe Updates モードが有効化されていて、WHERE 句をつけなかったり、WHERE 句の条件文にキーカラムを使わないとエラーになります。

WHERE 句は必須ではありませんが、WHERE 句をつけないと、Safe Updates モードを OFF にしている場合は、テーブルの全レコードが更新されてしまうのでお気をつけください。

MySQL の Safe Updates モードとは何かと、Safe Updates モードを無効化する方法が知りたい方はこちらをご覧ください。

MySQL の Safe Updates モードを無効化する方法


それでは UPDATE 文 を使って、テーブルのデータを更新してみましょう。

次のような students テーブルがあります。

MySQL でデータの更新 (UPDATE) 1


例えば、student_id = 3 の誕生日を 2025-12-22 に、paid_flag を TRUE (1) に変更するには、次のような UPDATE 文で変更できます。

UPDATE  students
SET     birthday = '2025-12-22',
        paid_flag = TRUE
WHERE   student_id = 3;

上の UPDATE 文を実行して、students テーブルの中身を確認します。

MySQL でデータの更新 (UPDATE) 2

student_id = 3 の誕生日が 2025-12-22 に、paid_flag が 1 に変更されていますね。


続いて、カラムの値を元に、データを更新してみましょう。

次のようなテストの点数を保持するための exam_results テーブルがあります。

MySQL でデータの更新 (UPDATE) 3


exam_id = 2 のテストの score を一律に 3 点追加したいような時は次の UPDATE 文で可能です。

UPDATE  exam_results
SET     score = score + 3
WHERE   exam_id = 2;

上の UPDATE 文を実行して、exam_results テーブルの中身を確認します。

MySQL でデータの更新 (UPDATE) 4

exam_id = 2 のレコードの score が 3 ずつ増えていますね。


以上、MySQL でテーブルのデータを更新 (UPDATE) する基本的な方法をご説明しました。

複数のテーブルを結合 (JOIN) してデータを更新 (UPDATE) する方法が知りたい方はこちらをご覧ください。

MySQL 複数テーブルを JOIN してデータを更新 (UPDATE)

© 2024 MySQL 入門