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 元テーブル名; を使うのが最もシンプルな方法です。バックアップ用の一時テーブル作成や、データ検証時の作業用コピーなど、さまざまな場面で活用できる便利な構文なので、ぜひ覚えておきましょう。
-
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
-
MySQLで最高額の給与を取得する方法
```html MySQLで最高額の給与を取得するには? テーブルの中から最も高い給与(最高額の給料)を取得したい場合は、集計関数の MAX() を使用します。MAX() 関数は、指定したカラムの中で最大の値を返してくれる便利な関数です。 基本構文 select MAX(yourColumnName) AS anyAliasName from yourTableName; サンプルテーブルの作成 まず、実際に動作を確認するためのテーブルを作成しましょう。 mysql> create table demo44 -> ( -> employee_id int not null