V SQL Server můžete vytvořit dočasnou tabulku založenou na jiné tabulce pomocí SELECT... INTO
syntax.
Tabulku můžete vytvořit s daty nebo bez nich. Jinými slovy, můžete zkopírovat data z původní tabulky, pokud chcete, nebo můžete vytvořit tabulku bez jakýchkoli dat.
Příklad 1 – Vytvoření tabulky s daty
Zde je příklad vytvoření dočasné tabulky založené na trvalé tabulce a zkopírování všech dat v procesu.
USE Test; SELECT CatId, CatName, Phone INTO #TempCatsAllData FROM dbo.Cats;
Podívejme se na výsledek.
SELECT * FROM #TempCatsAllData;
Výsledek:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Data můžete také filtrovat pomocí WHERE
klauzule, pokud to potřebujete.
Příklad 2 – Vytvoření tabulky bez dat
Zde je příklad vytvoření tabulky bez dat.
USE Test; SELECT CatId, CatName, Phone INTO #TempCatsNoData FROM dbo.Cats WHERE 1 = 0;
V tomto příkladu používám WHERE 1 = 0
nevracet žádná data.
Příklad 3 – Kontrola tabulek
V tomto příkladu porovnám dvě dočasné tabulky s původní tabulkou. Dělám to dotazem na sys.columns
zobrazení katalogu v původní databázi (pro původní tabulku) a v tempdb databáze (pro dočasné tabulky).
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%';
Výsledek:
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)