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

MySQLでSELECT INTOを実現する方法|CREATE TABLE SELECTコマンドの使い方を解説

MySQLにおけるSELECT INTOの基本

MySQLでは、他のデータベース(SQL Serverなど)で利用できる「SELECT INTO」構文がそのままサポートされていません。その代わりに、CREATE TABLE ... SELECT コマンドを使うことで、同じようにテーブルを作成しながらデータをコピーできます。

基本的な構文は以下のとおりです。

CREATE TABLE yourTableName SELECT * FROM yourOriginalTableName;

この記事では、実際にサンプルテーブルを作成し、データを別のテーブルへコピーする手順を順番に解説します。

1. 元となるテーブルを作成する

まず、コピー元となるテーブルを作成しましょう。ここでは「SelectIntoDemo」という名前のテーブルを用意します。

mysql> create table SelectIntoDemo
-> (
-> Id int,
-> Name varchar(200)
-> );
Query OK, 0 rows affected (0.50 sec)

2. テーブルにレコードを挿入する

次に、INSERT文を使ってサンプルデータを登録します。

mysql> insert into SelectIntoDemo values(1,'Bob'),(2,'Carol'),(3,'David');
Query OK, 3 rows affected (0.15 sec)
Records: 3 Duplicates: 0 Warnings: 0

3. 登録したデータを確認する

SELECT文で全レコードを表示して、データが正しく登録されているか確認しましょう。

mysql> select *from SelectIntoDemo;

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

+------+-------+
| Id   | Name |
+------+-------+
|    1 | Bob   |
|    2 | Carol |
|    3 | David |
+------+-------+
3 rows in set (0.00 sec)

4. CREATE TABLE SELECTで新しいテーブルへコピーする

ここからが本題です。冒頭で紹介した構文を使い、既存テーブルのデータごと新しいテーブルを作成します。ここでは「yourTempTable」という名前で作成します。

mysql> create table yourTempTable select *from SelectIntoDemo;
Query OK, 3 rows affected (0.56 sec)
Records: 3 Duplicates: 0 Warnings: 0

この1文だけで、「テーブルの新規作成」と「データのコピー」が同時に完了します。これがMySQLにおけるSELECT INTOの実現方法です。

5. コピー先のテーブルを確認する

最後に、新しく作成した「yourTempTable」の中身をSELECT文で確認してみましょう。

mysql> select *from yourTempTable;

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

+------+-------+
| Id   | Name  |
+------+-------+
|    1 | Bob   |
|    2 | Carol |
|    3 | David |
+------+-------+
3 rows in set (0.00 sec)

元のテーブル「SelectIntoDemo」とまったく同じデータが、新しいテーブルに正しくコピーされていることがわかります。

まとめ

MySQLでSELECT INTOのような処理を行いたい場合は、CREATE TABLE 新テーブル名 SELECT * FROM 元テーブル名; を使うのが最もシンプルな方法です。バックアップ用の一時テーブル作成や、データ検証時の作業用コピーなど、さまざまな場面で活用できる便利な構文なので、ぜひ覚えておきましょう。

  1. MySQLのINSERT INTO SELECT構文でAUTO_INCREMENTテーブルにデータを挿入する方法

    はじめにMySQLでは、INSERT INTO ... SELECT構文を使うことで、SELECT文の結果をそのまま別のテーブルへ挿入できます。AUTO_INCREMENT列を持つテーブルに対しても、SELECT句で明示的に値を指定すれば、任意のIDを設定した状態で挿入が可能です。本記事では、AUTO_INCREMENT主キーを持つテーブルに、INSERT INTO SELECT文で具体的な値を挿入する手順を、サンプルコードと実行結果とともに解説します。テーブルの作成まず、次のようにテーブルを作成します。mysql> create table DemoTable1923 &nb

  2. MySQLで最高額の給与を取得する方法

    ```html MySQLで最高額の給与を取得するには? テーブルの中から最も高い給与(最高額の給料)を取得したい場合は、集計関数の MAX() を使用します。MAX() 関数は、指定したカラムの中で最大の値を返してくれる便利な関数です。 基本構文 select MAX(yourColumnName) AS anyAliasName from yourTableName; サンプルテーブルの作成 まず、実際に動作を確認するためのテーブルを作成しましょう。 mysql> create table demo44 -> ( -> employee_id int not null