MySQL の一時テーブルとセッションデータ

MySQLMySQLBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、MySQL で一時テーブルを操作する方法を学びます。特に、セッション内での一時テーブルの作成と使用に焦点を当てます。最初に、root ユーザーとして MySQL サーバーに接続し、idnamedepartment の列を持つ temp_employees という名前の一時テーブルを作成します。

一時テーブルを作成した後、DESCRIBE コマンドを使用してその構造を記述することで、テーブルの存在を確認します。これにより、テーブルが正常に作成されたことが確認され、データ型や制約を含む列の定義が表示されます。その後、この実験では一時テーブル内でのデータの挿入とクエリの実行方法を案内し、セッション固有のデータ操作における一時テーブルの有用性を示します。最後に、一時テーブルのスコープを調べ、明示的に削除する方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql(("MySQL")) -.-> mysql/DatabaseFunctionsandDataTypesGroup(["Database Functions and Data Types"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_table("Table Removal") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/insert("Data Insertion") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/int("Integer Type") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/varchar("Variable Character Type") subgraph Lab Skills mysql/create_table -.-> lab-550917{{"MySQL の一時テーブルとセッションデータ"}} mysql/drop_table -.-> lab-550917{{"MySQL の一時テーブルとセッションデータ"}} mysql/select -.-> lab-550917{{"MySQL の一時テーブルとセッションデータ"}} mysql/insert -.-> lab-550917{{"MySQL の一時テーブルとセッションデータ"}} mysql/int -.-> lab-550917{{"MySQL の一時テーブルとセッションデータ"}} mysql/varchar -.-> lab-550917{{"MySQL の一時テーブルとセッションデータ"}} end

セッション用の一時テーブルを作成する

このステップでは、MySQL で一時テーブルを作成する方法を学びます。一時テーブルは、セッション中に中間結果を保存するのに便利です。セッションが終了すると自動的に削除されます。この特性により、一時的な作業スペースが必要なデータ操作やレポート作成などのタスクに最適です。

まず、MySQL サーバーに接続しましょう。LabEx 仮想マシン (VM) でターミナルを開きます。以下のコマンドを使用して、root ユーザーとして MySQL サーバーに接続できます。root パスワード (password) の入力を求められます。

mysql -u root -p

パスワードを入力すると、MySQL のプロンプト mysql> が表示されます。

次に、一時テーブルを作成しましょう。一時テーブルを作成する構文は通常のテーブルを作成する構文に似ていますが、TEMPORARY キーワードが必要です。

CREATE TEMPORARY TABLE temp_employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    department VARCHAR(255)
);

このコマンドは、idnamedepartment の 3 つの列を持つ temp_employees という名前の一時テーブルを作成します。id 列は自動インクリメントする主キー (primary key) です。

SHOW TABLES コマンドを使用してテーブルが作成されたことを確認できますが、SHOW TABLES は一時テーブルを表示しません。代わりに、テーブルの構造を調べることができます。

DESCRIBE temp_employees;

このコマンドは temp_employees テーブルの構造を表示し、テーブルが作成されたことを確認します。出力は次のようになります。

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255) | YES  |     | NULL    |                |
| department | varchar(255) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

これにより、一時テーブル temp_employees が現在の MySQL セッション内で正常に作成されたことが確認されます。

一時テーブルへのデータ挿入とクエリ

このステップでは、前のステップで作成した一時テーブルにデータを挿入し、そのデータをクエリする方法を学びます。これにより、セッション内で情報を保存して取得するために一時テーブルをどのように使用するかを示します。

前のステップから引き続き、mysql> プロンプトで MySQL サーバーに接続しているはずです。接続していない場合は、以下のコマンドを使用して再接続します。

mysql -u root -p

パスワードの入力を求められたら、password を入力します。

では、temp_employees テーブルにいくつかのデータを挿入しましょう。INSERT INTO 文を使用してレコードを追加します。

INSERT INTO temp_employees (name, department) VALUES ('Alice Smith', 'Sales');
INSERT INTO temp_employees (name, department) VALUES ('Bob Johnson', 'Marketing');
INSERT INTO temp_employees (name, department) VALUES ('Charlie Brown', 'IT');

これらのコマンドは、temp_employees テーブルに 3 行のデータを挿入し、各従業員の名前と部署を設定します。

データが正しく挿入されたことを確認するには、SELECT 文を使用してテーブルをクエリできます。

SELECT * FROM temp_employees;

このコマンドは、temp_employees テーブルからすべての列と行を取得します。出力は次のようになります。

+----+---------------+------------+
| id | name          | department |
+----+---------------+------------+
|  1 | Alice Smith   | Sales      |
|  2 | Bob Johnson   | Marketing  |
|  3 | Charlie Brown | IT         |
+----+---------------+------------+
3 rows in set (0.00 sec)

また、WHERE 句を使用してデータをフィルタリングすることもできます。たとえば、'Marketing' 部署の従業員のみを選択するには、次のようにします。

SELECT * FROM temp_employees WHERE department = 'Marketing';

出力は次のようになります。

+----+-------------+------------+
| id | name        | department |
+----+-------------+------------+
|  2 | Bob Johnson | Marketing  |
+----+-------------+------------+
1 row in set (0.00 sec)

これにより、標準的な SQL コマンドを使用して一時テーブルにデータを挿入し、クエリする方法が示されています。このデータは現在の MySQL セッション内でのみ利用可能です。

一時テーブルのスコープを確認する

このステップでは、一時テーブルのスコープを確認します。一時テーブルは、それが作成されたセッション内でのみアクセス可能です。これを実証するために、新しい MySQL セッションを開き、temp_employees テーブルにアクセスしようとします。

まず、前のステップで MySQL サーバーに接続したままであることを確認してください。接続している場合は、そのターミナルを開いたままにしておきます。

次に、LabEx 仮想マシン (VM) で 新しい ターミナルウィンドウを開きます。これは、デスクトップを右クリックして「Open Terminal Here」を選択することで行えます。

この新しいターミナルで、root ユーザーとして MySQL サーバーに接続します。

mysql -u root -p

パスワードの入力を求められたら、password を入力します。これで 2 つの別々の MySQL セッションができました。

この 新しい セッションで、temp_employees テーブルからデータを選択してみましょう。

SELECT * FROM temp_employees;

次のようなエラーメッセージが表示されるはずです。

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

このエラーメッセージは、最初のセッションで作成された temp_employees テーブルがこの新しいセッションでは見えず、アクセスできないことを確認しています。これは、一時テーブルがセッション固有であるためです。

次に、テーブルの構造を調べてみましょう。

DESCRIBE temp_employees;

これもエラーが表示されます。

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

これにより、一時テーブルはそれが作成されたセッション内にのみ存在することがさらに確認されます。新しい ターミナルウィンドウを閉じ、一時テーブルを作成した元のターミナルに戻ります。次のステップではそのターミナルを使用します。

一時テーブルを削除する

このステップでは、先ほど作成した一時テーブルを明示的に削除します。一時テーブルはセッション終了時に自動的に削除されますが、使用が終わったら明示的に削除するのが良い習慣です。これにより、リソースを解放し、同じセッション内で後で同じ名前のテーブルを作成する必要がある場合の潜在的な名前の衝突を回避することができます。

temp_employees テーブルを作成した元のターミナルセッションで MySQL サーバーに接続していることを確認してください。接続していない場合は、以下のコマンドを使用して再接続します。

mysql -u root -p

パスワードの入力を求められたら、password を入力します。

一時テーブルを削除するには、DROP TEMPORARY TABLE 文を使用します。

DROP TEMPORARY TABLE temp_employees;

このコマンドにより、temp_employees テーブルが現在のセッションから削除されます。

テーブルが削除されたことを確認するには、再度そのテーブルからデータを選択してみましょう。

SELECT * FROM temp_employees;

別のセッションからテーブルにアクセスしようとしたときと同じエラーメッセージが表示されるはずです。

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

これにより、一時テーブルが正常に削除されたことが確認されます。

これで、次のコマンドを入力することで MySQL モニターを終了できます。

exit

これにより、MySQL サーバーから切断されます。

まとめ

この実験では、MySQL セッション内で一時テーブルを作成する方法を学びました。これには、mysql -u root -p コマンドを使用して MySQL サーバーに接続し、CREATE TEMPORARY TABLE 文を使用してテーブル構造を定義することが含まれます。テーブル構造には、列名、データ型、主キーや自動インクリメントフィールドなどの制約が含まれます。

また、標準の SHOW TABLES コマンドでは一時テーブルが表示されないことも学びました。代わりに、DESCRIBE コマンドを使用して一時テーブルの構造を表示し、定義された列とそのプロパティを確認することで、一時テーブルの作成を検証することができます。