W SQL Server możesz utworzyć tymczasową tabelę na podstawie innej tabeli, używając SELECT... INTO
składnia.
Możesz utworzyć tabelę z danymi lub bez. Innymi słowy, jeśli chcesz, możesz skopiować dane z oryginalnej tabeli lub utworzyć tabelę bez żadnych danych.
Przykład 1 – Utwórz tabelę z danymi
Oto przykład tworzenia tabeli tymczasowej na podstawie tabeli trwałej i kopiowania wszystkich danych w procesie.
USE Test; SELECT CatId, CatName, Phone INTO #TempCatsAllData FROM dbo.Cats;
Zobaczmy wynik.
SELECT * FROM #TempCatsAllData;
Wynik:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Możesz także filtrować dane za pomocą WHERE
klauzula, jeśli potrzebujesz.
Przykład 2 – Utwórz tabelę bez danych
Oto przykład tworzenia tabeli bez danych.
USE Test; SELECT CatId, CatName, Phone INTO #TempCatsNoData FROM dbo.Cats WHERE 1 = 0;
W tym przykładzie używam WHERE 1 = 0
nie zwracać żadnych danych.
Przykład 3 – Sprawdź tabele
W tym przykładzie porównuję dwie tymczasowe tabele z tabelą oryginalną. Robię to, wysyłając zapytanie do sys.columns
widok katalogu w oryginalnej bazie danych (dla oryginalnej tabeli) oraz w tempdb baza danych (dla tabel tymczasowych).
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%';
Wynik:
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)