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 モードを無効化する方法が知りたい方はこちらをご覧ください。
それでは UPDATE 文 を使って、テーブルのデータを更新してみましょう。
次のような students テーブルがあります。
例えば、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 テーブルの中身を確認します。
student_id = 3 の誕生日が 2025-12-22 に、paid_flag が 1 に変更されていますね。
続いて、カラムの値を元に、データを更新してみましょう。
次のようなテストの点数を保持するための exam_results テーブルがあります。
exam_id = 2 のテストの score を一律に 3 点追加したいような時は次の UPDATE 文で可能です。
UPDATE exam_results
SET score = score + 3
WHERE exam_id = 2;
上の UPDATE 文を実行して、exam_results テーブルの中身を確認します。
exam_id = 2 のレコードの score が 3 ずつ増えていますね。
以上、MySQL でテーブルのデータを更新 (UPDATE) する基本的な方法をご説明しました。
複数のテーブルを結合 (JOIN) してデータを更新 (UPDATE) する方法が知りたい方はこちらをご覧ください。