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

MySQLのCONCAT()関数を使って複雑なINSERT文を実行する方法

MySQLで複雑なINSERT文を実行したい場合、CONCAT()関数を活用すると便利です。この記事では、StudentId(学生ID)とStudentFirstName(学生の名前)を持つテーブルを例に、その具体的な使い方を解説します。

複雑なINSERTを実行すると、すべての値に対して「Web Student」というテキストが挿入され、一意のStudentIdが文字列として連結されます。

1. 最初のテーブルを作成する

まず、以下のクエリでテーブルを作成します。

mysql> create table DemoTable
(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFirstName varchar(20)
);
Query OK, 0 rows affected (0.55 sec)

2. レコードを挿入する

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

mysql> insert into DemoTable(StudentFirstName) values('John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentFirstName) values('Larry');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentFirstName) values('Bob');
Query OK, 1 row affected (0.13 sec)

3. テーブルの内容を確認する

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

mysql> select *from DemoTable;

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

+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 1 | John |
| 2 | Larry |
| 3 | Bob |
+-----------+------------------+
3 rows in set (0.00 sec)

4. 2つ目のテーブルを作成する

次に、データの挿入先となる2つ目のテーブルを作成します。

mysql> create table DemoTable2
(
   ClientId int,
   ClientProjectName varchar(20)
);
Query OK, 0 rows affected (0.54 sec)

5. CONCAT()を使った複雑なINSERTを実行する

ここが本題です。SELECT文とCONCAT()関数を組み合わせることで、元テーブルの値に文字列を連結しながら、別テーブルへ一括挿入できます。

mysql> insert into DemoTable2 select StudentId,concat('Web Student=', StudentId) from DemoTable;
Query OK, 3 rows affected (0.17 sec)
Records : 3 Duplicates : 0 Warnings : 0

6. 挿入結果を確認する

SELECT文で2つ目のテーブルの全レコードを表示してみましょう。

mysql> select *from DemoTable2;

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

+----------+-------------------+
| ClientId | ClientProjectName |
+----------+-------------------+
| 1 | Web Student=1 |
| 2 | Web Student=2 |
| 3 | Web Student=3 |
+----------+-------------------+
3 rows in set (0.00 sec)

まとめ

このように、INSERT ... SELECT文とCONCAT()関数を組み合わせることで、既存テーブルのデータに任意の文字列を連結しながら、別のテーブルへ効率的にデータを挿入できます。一意のIDに接頭辞やラベルを付けて別テーブルへコピーしたい場合など、実務でもよく使われるテクニックなので、ぜひ覚えておきましょう。

  1. JDBCを使ってMySQLデータベースにファイルを保存・挿入する方法

    一般的に、ファイルの内容はMySQLデータベースでは Clob 型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)のカラムに保存されます。 JDBCはClob型をサポートしており、これを利用することでファイルの内容をデータベースのテーブルに格納できます。 PreparedStatement インターフェースが提供する setCharacterStream() メソッドは、パラメータのインデックス(位置)を表す整数と、Readerオブジェクトを引数として受け取ります。 このメソッドを使うと、指定したインデックスのプレースホルダ(?)に対して、Readerオブジェクト(ファイ

  2. Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】

    はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId