概要:このチュートリアルでは、SQL Server一時テーブルを作成する方法と、それらを効果的に操作す
一時テーブルは、SQL Server上に一時的に存在するテーブルです。
一時テーブルは、複数回アクセスされる即時結果セットを格納するのに役立ちます。
一時テーブルの作成
SQL Serverは、SELECT INTO
およびCREATE TABLE
ステートメントを介して一時テーブルを作成する二つの方法を提供しました。,
SELECT INTOステートメントを使用して一時テーブルを作成
一時テーブルを作成する最初の方法は、以下に示すようにSELECT INTO
ステートメントを使用することです。
Code language: SQL (Structured Query Language) (sql)
一時テーブルの名前はハッシュ記号(#
)で始まります。 たとえば、次のステートメントは、SELECT INTO
ステートメントを使用して一時テーブルを作成します。
この例では、#trek_products
という名前の一時テーブルを作成し、SELECT
ステートメントの選択リストから派生した二つの列を持ちます。, このステートメントは一時テーブルを作成し、production.products
テーブルから一時テーブルにデータを移入しました。,
このステートメントを実行すると、tempdb
という名前のシステムデータベースに作成された一時テーブル名を見つけることができます。>tempdb>次の図に示すように、一時テーブルにアクセスできます。
画像からはっきりとわかるように、一時テーブルは後置としての数字のシーケンスでも構成されています。, これは、一時テーブルの一意の識別子です。 複数のデータベース接続では、同じ名前の一時テーブルを作成できるため、SQL Serverでは、一時テーブルを区別するために、この一意の番号を一時テーブル名の最後に
CREATE TABLEステートメントを使用して一時テーブルを作成
一時テーブルを作成する第二の方法は、CREATE TABLE
ステートメントを使用することです。
Code language: SQL (Structured Query Language) (sql)
このステートメントの構文は、通常のテーブルを作成するのと同じです。,一時テーブルはハッシュシンボルで始まります(#
)
一時テーブルを作成した後、通常のテーブルとしてこのテーブルにデータを挿入できます。
もちろん、現在のセッション内でデータに対してクエリすることができます。
Code language: SQL (Structured Query Language) (sql)
ただし、別の接続を開いて上記のクエリを試してみると、次のエラーが表示されます。
Code language: SQL (Structured Query Language) (sql)
これは、一時テーブルがそれらを作成したセッション内でのみアクセス可能であるためです。,
グローバル一時テーブル
場合によっては、接続全体でアクセス可能な一時テーブルを作成することができます。 この場合、グローバル一時テーブルを使用できます。
一時テーブルとは異なり、グローバル一時テーブルの名前はダブルハッシュ記号(##
)で始まります。
次のステートメントは、まず##heller_products
という名前のグローバル一時テーブルを作成し、production.products
テーブルからこのテーブルにデータを移入します。
これで、##heller_products
任意のセッションから##heller_products
テーブルにアクセスできます。,
一時テーブルの削除
自動削除
SQL Serverは、作成した接続を閉じると、一時テーブルを自動的に削除します。
まさにSQLサーバーが世界一時テーブルの接続を作成したのでおすすめのクエリに対しこのテーブルの接続が完了します。,
手動削除
一時テーブルが作成された接続から、DROP TABLE
ステートメントを使用して、一時テーブルを手動で削除できます。
Code language: SQL (Structured Query Language) (sql)
このチュートリアルでは、SQL Server一時テーブルと、それらを効果的に作成および削除する方法について学習しました。