paint-brush
MariaDB で一時テーブルを使用する方法@alejandroduarte
726 測定値
726 測定値

MariaDB で一時テーブルを使用する方法

Alejandro Duarte4m2024/05/02
Read on Terminal Reader

長すぎる; 読むには

一時テーブルは一時的なデータ操作に便利です。一時テーブルは、作成されたセッションの期間のみ存在し、他のセッションでは参照できません。たとえば、データベース内の「products」というテーブルを考えてみましょう。「products」の構造を模倣した一時テーブルを作成できます。
featured image - MariaDB で一時テーブルを使用する方法
Alejandro Duarte HackerNoon profile picture

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. | +----+--------+------------------+---------------------------------------------------+

フィルタリングされたデータが表示されます。

結論

一時テーブルは、永続的なデータ ストアに影響を与えずに一時的な処理のためにデータを処理する強力な方法を提供します。一時テーブルは、データを一時的に操作または変換する必要があるシナリオで特に役立ちます。この種のデータ操作には永続テーブルを使用できますが、自動クリーンアップ、名前の競合のリスクの軽減、分離とセキュリティ、およびクエリ パフォーマンスのためのリソース管理が必要な場合には、一時テーブルが役立ちます。