MariaDB で一時テーブルがどのように機能するかを見てみましょう。まず、サーバーに接続する必要があります。例: (独自の接続詳細を使用):
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
ここで、念のため、標準の (永続的な) テーブルを作成しましょう。手順は次のとおりです。
CREATE TABLE t ( c INT );
このテーブルt
は、クライアントを終了した後もデータベースに残ります。
exit
再接続してSHOW TABLES;
を使用して既存のテーブルを確認すると、テーブルt
まだリストされています。
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
SHOW TABLES;
+----------------+ | Tables_in_demo | +----------------+ | t | +----------------+
これらはすべてかなり明白ですが、今度はこのテーブルを再作成して、何か違うことを試してみましょう。
CREATE OR REPLACE TEMPORARY TABLE t ( c INT );
TEMPORARY
キーワードに注意してください。このテーブルを作成した後、 SHOW TABLES;
を実行すると、リストに表示されます。このテーブルにデータを挿入したり、クエリを実行したり、他のテーブルと結合したりできます。現在のセッション中は通常のテーブルのように動作します。ただし、クライアントを終了して再接続し、再度SHOW TABLES;
を実行すると、一時テーブルt
リストに表示されません。
一時テーブルは、作成されたセッションの期間中のみ存在し、他のセッションでは表示されません。
一時テーブルは一時的なデータ操作に非常に便利です。たとえば、データベース内のproducts
というテーブルを考えてみましょう。
CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY code (code) )
products
の構造を模倣した一時テーブルを作成できます。
CREATE TEMPORARY TABLE t LIKE products;
次のコマンドを実行すると確認できます。
DESCRIBE t;
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(100) | NO | UNI | NULL | | | name | varchar(250) | NO | | NULL | | | description | text | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+
最初は、 t
は空です。ただし、 products
からt
にデータを転送するとします。コードに数字 0 を含む製品のみを含めると仮定します。
INSERT INTO t SELECT * FROM products WHERE code LIKE '%0%';
このコマンドを実行した後、一時テーブルt
をクエリすると、次のようになります。
SELECT * FROM t;
+----+--------+------------------+---------------------------------------------------+ | id | code | name | description | +----+--------+------------------+---------------------------------------------------+ | 1 | BG2024 | BugBlaster | Eradicates software bugs with a single scan. | | 3 | FW001 | FireWhale | An oversized, comprehensive firewall solution. | | 4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. | +----+--------+------------------+---------------------------------------------------+
フィルタリングされたデータが表示されます。
一時テーブルは、永続的なデータ ストアに影響を与えずに一時的な処理のためにデータを処理する強力な方法を提供します。一時テーブルは、データを一時的に操作または変換する必要があるシナリオで特に役立ちます。この種のデータ操作には永続テーブルを使用できますが、自動クリーンアップ、名前の競合のリスクの軽減、分離とセキュリティ、およびクエリ パフォーマンスのためのリソース管理が必要な場合には、一時テーブルが役立ちます。