MySQLでUPDATE時に値が同一の場合、データは上書きされるのか?動作を検証
結論から言うと、MySQLのUPDATE文は、設定しようとする値がすでにテーブル内の値と同一である場合、その値を上書きしません。実際にサンプルテーブルを作成して、この動作を確認してみましょう。
1. 検証用テーブルの作成
まず、学生ID・数学の点数・MySQLの点数を格納するテーブルを作成します。
mysql> create table DemoTable
(
StudentId int,
StudentMathMarks int,
StudentMySQLMarks int
);
Query OK, 0 rows affected (0.46 sec)2. テストデータの挿入
INSERTコマンドを使って、いくつかのレコードを登録します。
mysql> insert into DemoTable values(1,56,78); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(2,88,99); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(3,34,98); Query OK, 1 row affected (0.13 sec)
3. 登録データの確認
SELECT文ですべてのレコードを表示します。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+-----------+------------------+-------------------+ | StudentId | StudentMathMarks | StudentMySQLMarks | +-----------+------------------+-------------------+ | 1 | 56 | 78 | | 2 | 88 | 99 | | 3 | 34 | 98 | +-----------+------------------+-------------------+ 3 rows in set (0.00 sec)
4. 同一の値でUPDATEを実行してみる
ここで、すでに存在しているまったく同じ値でUPDATE文を実行します。具体的には、StudentIdが「2」の行に対して、StudentId=2、数学の点数=88、MySQLの点数=99を指定します(これらは現在の値と完全に一致しています)。
mysql> update DemoTable set StudentId=2,StudentMathMarks=88,StudentMySQLMarks=99 where StudentId=2; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0
結果のポイント:出力メッセージの読み方
注目すべきは実行後の出力メッセージです。
- Rows matched: 1 … WHERE条件に一致した行は1件存在する
- Changed: 0 … 実際に変更された行は0件
このように「0 rows affected」と表示されていることから、UPDATE対象の値がすでに同一である場合、MySQLは値を上書きしないことがわかります。条件には一致していても、変更の必要がない行に対しては書き込み処理が行われないのです。
この仕組みはパフォーマンス面でもメリットがあります。不要なディスク書き込みが発生しないため、大量のUPDATE処理を実行する際にも、実際に変化のある行だけが更新対象となります。
-
MySQLで空白(空文字列)の列をNULLに更新する方法
データベースを運用していると、「空文字列()」として登録されてしまったデータを「NULL」に置き換えたいケースによく出会います。NULLと空文字列は似ているようで意味が異なり、検索条件や集計処理に影響を与えるため、統一しておくことが重要です。この記事では、IF()関数とUPDATE文を組み合わせて、空白値の列をNULLに更新する手順を、実際のSQLコードと実行結果付きで解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成します。ここでは氏名を格納するシンプルなテーブルを用意しました。mysql> create table DemoTable1601 -&g
-
MySQLでWHERE句に複数の条件を指定してデータを更新する方法
MySQLでWHERE句に複数の値を指定して更新する方法MySQLのUPDATE文では、WHERE句に複数の条件を組み合わせることで、より正確に対象のレコードを絞り込んで更新することができます。AND演算子やOR演算子を使うことで、複数のカラムの値を条件として指定可能です。この記事では、実際にテーブルを作成し、WHERE句に複数の条件を指定してデータを更新する手順を具体的な例とともに解説します。まずはテーブルを作成する最初に、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -&