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

【MySQL】既存データを削除せずに新しいデータを追記して更新する方法

はじめに

MySQLでデータを更新する際、「古いデータはそのまま残しつつ、新しいデータを追加したい」というケースはよくあります。そんなときは、UPDATE文CONCAT関数を組み合わせることで、元のデータを保持したまま新しい値を連結して保存できます。

基本構文

UPDATE テーブル名 SET カラム名 = CONCAT(カラム名, ",追加する値");

CONCAT関数は文字列を連結する関数です。既存のカラムの値を引数に渡し、そこに新しい値を付け加えることで、上書きではなく「追記」の形で更新が行えます。

実際の手順

1. テーブルを作成する

まず、動作確認用のサンプルテーブルを作成しましょう。

mysql> CREATE TABLE DemoTable
-> (
-> CustomerName varchar(100)
-> );
Query OK, 0 rows affected (0.54 sec)

2. レコードを挿入する

INSERTコマンドを使って、テーブルにいくつかのレコードを追加します。

mysql> INSERT INTO DemoTable VALUES('Chris');
Query OK, 1 row affected (0.24 sec)

mysql> INSERT INTO DemoTable VALUES('David');
Query OK, 1 row affected (0.16 sec)

mysql> INSERT INTO DemoTable VALUES('Sam');
Query OK, 1 row affected (0.14 sec)

3. 現在のレコードを確認する

SELECT文で、テーブル内のすべてのレコードを表示してみます。

mysql> SELECT * FROM DemoTable;

出力結果

+--------------+
| CustomerName |
+--------------+
| Chris |
| David |
| Sam |
+--------------+
3 rows in set (0.00 sec)

古いデータを残したまま更新するクエリ

それでは本題です。以下が、既存データを削除せずに新しい値「Brown」を追記するUPDATE文です。

mysql> UPDATE DemoTable SET CustomerName=CONCAT(CustomerName,",Brown");
Query OK, 3 rows affected (0.14 sec)
Rows matched: 3 Changed: 3 Warnings: 0

ポイントは、SET句で「CustomerName」自体をCONCAT関数の引数に指定している点です。これにより「元の値 + ,Brown」という文字列が生成され、古いデータが保たれたまま更新されます。

更新後のレコードを確認する

もう一度テーブルの中身を見てみましょう。

mysql> SELECT * FROM DemoTable;

出力結果

+--------------+
| CustomerName |
+--------------+
| Chris,Brown |
| David,Brown |
| Sam,Brown |
+--------------+
3 rows in set (0.00 sec)

すべてのレコードに「,Brown」が追記され、元の名前もきちんと残っていることが確認できます。

まとめ

UPDATE文とCONCAT関数を組み合わせれば、MySQLで既存のデータを上書きすることなく、新しい値を簡単に追記できます。履歴やログのように過去の情報を保持しながらデータを積み重ねていきたい場合に非常に便利なテクニックです。

なお、上記の例ではテーブル全体が更新対象になっていますが、WHERE句を追加すれば「特定のレコードだけ」を対象に追記更新することも可能です。運用時は用途に応じて条件を指定するとよいでしょう。

  1. JavaでMySQLデータベースのデータを削除する方法|DELETE文の使い方を徹底解説

    MySQLデータベースからデータを削除するには、DELETEコマンドを使用します。まずは基本となる構文を確認しておきましょう。 DELETE文の基本構文 delete from テーブル名 where 条件; WHERE句で条件を指定すると、該当するレコードだけをピンポイントで削除できます。逆に条件を指定しなかった場合、テーブル内の全データが削除されてしまうため、実行前には必ず条件を確認してください。 本記事では、JavaプログラムからMySQLデータベースのデータを削除する具体的な手順を解説します。はじめにサンプル用のテーブルを作成し、テストデータを挿入していきましょう。 サンプルテーブルの

  2. JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説

    JavaからMySQLデータベースにデータを挿入するには、SQLのINSERTコマンドを使用します。基本的な構文は以下の通りです。 INSERT INTO テーブル名(カラム名1, カラム名2, ......カラム名N) VALUES(値1, 値2, ......値N); ここからは、Javaプログラムを使って実際にMySQLデータベースへレコードを挿入する手順を、順を追って見ていきましょう。 ステップ1:MySQLでテーブルを作成する まず、データの挿入先となるテーブルをMySQL側に作成します。以下のクエリを実行してください。 mysql> create table Insert