MySQL で一時テーブルを作成する
このチュートリアルでは、MySQL で一時テーブルを作成するためのさまざまな方法を検討することを目的としています。
一時テーブルの重要な機能の 1つは、暫定データの格納に役立つことです。この機能は、MySQL バージョン 3.23 以降で有効になっています。
ユーザーが手動でテーブルを削除するか、セッションが終了すると、これらのテーブルは失われます。
一時テーブルのもう 1つの機能は、同じ名前のテーブルを複数の接続で使用できることです。これは、クライアントがクライアントによって作成された一時テーブルのみを処理できるために可能になります。
MySQL で一時テーブルを作成する主な方法は 2つあります。
- 基本的な一時テーブルの作成。
SELECT
クエリからの一時的なテーブルの作成。
ただし、開始する前に、操作するダミーデータセットを作成します。ここでは、テーブル student_details
とその中のいくつかの行を作成します。
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
上記のクエリは、学生の名前と名前を含む行とともにテーブルを作成します。データのエントリを表示するために、次のコードを使用します。
SELECT * FROM student_details;
上記のコードは、次の出力を提供します。
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
次に、student_details
テーブルに似た students_temporary
という名前の一時テーブルを作成しましょう。
MySQL で基本的な一時テーブルを作成する
一時テーブルを作成する最も基本的な方法の 1つは、TEMPORARY
キーワードを使用することです。次のように、students_teporary
という名前の一時テーブルを作成できます。
-- Basic temporary table creation
CREATE TEMPORARY TABLE students_teporary(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
上記のコードは、students_temporary
という名前の一時テーブルを作成します。次に、次のコードを使用して、このテーブルにいくつかのエントリを挿入します。
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
前述のコードを出力すると、次のような一時テーブルが作成されます。
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
SELECT
クエリから一時テーブルを作成する
一時テーブルを作成するもう 1つの方法は、select ステートメントを使用することです。このメソッドは、テーブル全体を同じエンティティとデータ型の一時テーブルに複製するのに役立ちます。SELECT
ステートメントを使用して、一時テーブル students_details_temporary
を作成してみましょう。これは、次のコードで実行できます。
-- Replicating the students_details table
CREATE TEMPORARY TABLE IF NOT EXISTS students_details_temporary AS (SELECT * FROM students_details);
IF NOT EXISTS
を使用して、データベースに student_details_temporary
という名前のテーブルがないことを確認します。前述のコードは、次の出力を提供します。
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
ご覧のとおり、元のテーブル(student_details
)と同じエンティティとエントリを持つ一時テーブルが生成されています。
したがって、上記の 2つの方法を使用すると、一時テーブルを効率的に作成できます。この一時テーブルは、最後の接続が終了するとすぐに削除されます。