SQL Serverでは、SELECT... INTO
を使用して、別のテーブルに基づいて一時テーブルを作成できます。 構文。
データの有無にかかわらずテーブルを作成できます。つまり、必要に応じて元のテーブルからデータをコピーすることも、データなしでテーブルを作成することもできます。
例1-データを使用してテーブルを作成する
永続テーブルに基づいて一時テーブルを作成し、プロセス内のすべてのデータをコピーする例を次に示します。
USE Test; SELECT CatId, CatName, Phone INTO #TempCatsAllData FROM dbo.Cats;
結果を見てみましょう。
SELECT * FROM #TempCatsAllData;
結果:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
WHERE
を使用してデータをフィルタリングすることもできます 必要に応じて条項。
例2–データなしでテーブルを作成する
データなしでテーブルを作成する例を次に示します。
USE Test; SELECT CatId, CatName, Phone INTO #TempCatsNoData FROM dbo.Cats WHERE 1 = 0;
この例では、WHERE 1 = 0
を使用します データを返しません。
例3–テーブルを確認する
この例では、2つの一時テーブルを元のテーブルと比較します。これを行うには、sys.columns
にクエリを実行します 元のデータベース(元のテーブル用)および tempdbのカタログビュー データベース(一時テーブル用)。
USE Test; SELECT name AS [Column Name], TYPE_NAME(user_type_id) AS [Data Type], max_length, [precision], scale, is_nullable FROM sys.columns WHERE OBJECT_NAME(object_id) = 'Cats'; USE tempdb; SELECT name AS [Column Name], TYPE_NAME(user_type_id) AS [Data Type], max_length, [precision], scale, is_nullable FROM sys.columns WHERE OBJECT_NAME(object_id) LIKE '#TempCatsAllData%'; SELECT name AS [Column Name], TYPE_NAME(user_type_id) AS [Data Type], max_length, [precision], scale, is_nullable FROM sys.columns WHERE OBJECT_NAME(object_id) LIKE '#TempCatsNoData%';
結果:
Changed database context to 'Test'. +---------------+-------------+--------------+-------------+---------+---------------+ | Column Name | Data Type | max_length | precision | scale | is_nullable | |---------------+-------------+--------------+-------------+---------+---------------| | CatId | int | 4 | 10 | 0 | 0 | | CatName | varchar | 70 | 0 | 0 | 1 | | Phone | varchar | 10 | 0 | 0 | 1 | +---------------+-------------+--------------+-------------+---------+---------------+ (3 rows affected) Changed database context to 'tempdb'. +---------------+-------------+--------------+-------------+---------+---------------+ | Column Name | Data Type | max_length | precision | scale | is_nullable | |---------------+-------------+--------------+-------------+---------+---------------| | CatId | int | 4 | 10 | 0 | 0 | | CatName | varchar | 70 | 0 | 0 | 1 | | Phone | varchar | 10 | 0 | 0 | 1 | +---------------+-------------+--------------+-------------+---------+---------------+ (3 rows affected) +---------------+-------------+--------------+-------------+---------+---------------+ | Column Name | Data Type | max_length | precision | scale | is_nullable | |---------------+-------------+--------------+-------------+---------+---------------| | CatId | int | 4 | 10 | 0 | 0 | | CatName | varchar | 70 | 0 | 0 | 1 | | Phone | varchar | 10 | 0 | 0 | 1 | +---------------+-------------+--------------+-------------+---------+---------------+ (3 rows affected)