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

MySQLでテーブルの行全体を更新する方法|UPDATE文の基本と実例

MySQLで行全体を更新するには?

MySQLでテーブルの行全体(レコード)を更新したい場合は、UPDATEコマンドを使用します。更新対象の行を正確に特定するために、主キー(PRIMARY KEY)カラムの値が必要になります。

行全体を更新するための基本的な構文は以下の通りです。

UPDATE yourTableName SET yourColumnName1 = 'yourValue1', yourColumnName2 = 'yourValue2',
    yourColumnName3 = 'yourValue3', .......................N
    WHERE yourPrimaryKeyColumnName = yourValue;

SET句に更新したいカラム名と新しい値を列挙し、WHERE句で主キーを指定することで、その1行だけを安全に更新できます。WHERE句を忘れると全レコードが更新されてしまうので注意してください。

サンプルテーブルを作成する

構文を実際に理解するために、まずテーブルを作成しましょう。テーブル作成のクエリは以下の通りです。

mysql> create table UpdateEntireRowDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> Name varchar(20),
    -> Age int,
    -> Marks int,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.74 sec)

このテーブルでは「Id」が主キーとなっており、AUTO_INCREMENTによって自動的に採番されます。

テストデータを挿入する

次に、INSERTコマンドを使っていくつかのレコードを挿入します。

mysql> insert into UpdateEntireRowDemo(Name,Age,Marks) values('Sam',23,78);
Query OK, 1 row affected (0.32 sec)

mysql> insert into UpdateEntireRowDemo(Name,Age,Marks) values('Mike',21,99);
Query OK, 1 row affected (0.16 sec)

mysql> insert into UpdateEntireRowDemo(Name,Age,Marks) values('Carol',26,80);
Query OK, 1 row affected (0.11 sec)

mysql> insert into UpdateEntireRowDemo(Name,Age,Marks) values('John',22,71);
Query OK, 1 row affected (0.16 sec)

mysql> insert into UpdateEntireRowDemo(Name,Age,Marks) values('Bob',29,89);
Query OK, 1 row affected (0.16 sec)

mysql> insert into UpdateEntireRowDemo(Name,Age,Marks) values('David',25,68);
Query OK, 1 row affected (0.20 sec)

mysql> insert into UpdateEntireRowDemo(Name,Age,Marks) values('Larry',31,91);
Query OK, 1 row affected (0.12 sec)

挿入されたデータを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from UpdateEntireRowDemo;

実行結果は以下の通りです。

+----+-------+------+-------+
| Id | Name  | Age  | Marks |
+----+-------+------+-------+
|  1 | Sam   |   23 |    78 |
|  2 | Mike  |   21 |    99 |
|  3 | Carol |   26 |    80 |
|  4 | John  |   22 |    71 |
|  5 | Bob   |   29 |    89 |
|  6 | David |   25 |    68 |
|  7 | Larry |   31 |    91 |
+----+-------+------+-------+
7 rows in set (0.00 sec)

UPDATE文で行全体を更新する

それでは、実際にMySQLで行全体を更新してみましょう。ここでは例として、「Id」が5であるBobの行を更新します。Name・Age・Marksのすべての値を変更します。

実行するクエリは以下の通りです。

mysql> update UpdateEntireRowDemo
    -> set Name = 'James',Age = 19,Marks = 78
    -> where Id = 5;
Query OK, 1 row affected (0.12 sec)
Rows matched: 1 Changed: 1 Warnings: 0

「Rows matched: 1 Changed: 1」と表示されていることから、該当する1行が正しく更新されたことがわかります。

更新結果を確認する

更新後の行をSELECT文で確認してみます。

mysql> select *from UpdateEntireRowDemo where Id = 5;

実行結果は以下の通りです。

+----+-------+------+-------+
| Id | Name  | Age  | Marks |
+----+-------+------+-------+
|  5 | James | 19   |    78 |
+----+-------+------+-------+
1 row in set (0.00 sec)

Nameが「James」、Ageが「19」、Marksが「78」に変更され、行全体が正常に更新されていることが確認できます。

テーブル全体で最終確認

最後に、テーブル内のすべてのレコードを表示して全体を確認してみましょう。

mysql> select *from UpdateEntireRowDemo;

以下の出力を見ると、Id=5の行だけが更新され、他のレコードには影響がないことがわかります。

+----+-------+------+-------+
| Id | Name  | Age  | Marks |
+----+-------+------+-------+
|  1 | Sam   |   23 |    78 |
|  2 | Mike  |   21 |    99 |
|  3 | Carol |   26 |    80 |
|  4 | John  |   22 |    71 |
|  5 | James |   19 |    78 |
|  6 | David |   25 |    68 |
|  7 | Larry |   31 |    91 |
+----+-------+------+-------+
7 rows in set (0.00 sec)

まとめ

MySQLで行全体を更新する際のポイントは以下の通りです。

  • UPDATE文を使用し、SET句で更新対象のカラムと値を指定する
  • WHERE句で主キーを指定することで、目的の1行だけを確実に更新できる
  • WHERE句を指定しないとテーブル内の全レコードが更新されるため、必ず条件をつける
  • 更新後はSELECT文で結果を確認し、意図した通りに反映されているかチェックすると安心

この手順を覚えておけば、特定のレコードの内容をまとめて修正したい場合にもスムーズに対応できます。

  1. JavaのPreparedStatementを使ってMySQLテーブルを更新する方法

    JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a

  2. MySQLでGROUP BYのように特定の1行だけ更新する方法|ORDER BYとLIMITを活用したUPDATE文の書き方

    MySQLでは、UPDATE文の中でGROUP BYを直接使用することができません。しかし、「同じ値を持つ複数のレコードの中から、最初の1行だけを更新したい」というケースは実際の開発でよく発生します。 そんなときに役立つのが、ORDER BYとLIMITを組み合わせたUPDATE文です。この記事では、サンプルテーブルを使いながら、その具体的な手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、従業員情報を格納するテーブル「DemoTable2018」を作成します。テーブルには、自動採番される主キー「EmployeeId」、従業員名「EmployeeName」、給与「Emp