MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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処理を実行する際にも、実際に変化のある行だけが更新対象となります。

  1. MySQLで空白(空文字列)の列をNULLに更新する方法

    データベースを運用していると、「空文字列()」として登録されてしまったデータを「NULL」に置き換えたいケースによく出会います。NULLと空文字列は似ているようで意味が異なり、検索条件や集計処理に影響を与えるため、統一しておくことが重要です。この記事では、IF()関数とUPDATE文を組み合わせて、空白値の列をNULLに更新する手順を、実際のSQLコードと実行結果付きで解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成します。ここでは氏名を格納するシンプルなテーブルを用意しました。mysql> create table DemoTable1601 -&g

  2. MySQLでWHERE句に複数の条件を指定してデータを更新する方法

    MySQLでWHERE句に複数の値を指定して更新する方法MySQLのUPDATE文では、WHERE句に複数の条件を組み合わせることで、より正確に対象のレコードを絞り込んで更新することができます。AND演算子やOR演算子を使うことで、複数のカラムの値を条件として指定可能です。この記事では、実際にテーブルを作成し、WHERE句に複数の条件を指定してデータを更新する手順を具体的な例とともに解説します。まずはテーブルを作成する最初に、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -&