Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utwórz tabelę tymczasową na podstawie innej tabeli w SQL Server

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)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Logowanie nie powiodło się dla użytkownika „DOMAIN\MACHINENAME$”

  2. Koncepcje projektowania bazy danych za pomocą programu SQL Server Management Studio (SSMS) część 1

  3. Dlaczego moje połączenie ODBC kończy się niepowodzeniem podczas uruchamiania ładowania SSIS w programie Visual Studio, ale nie podczas uruchamiania tego samego pakietu przy użyciu narzędzia Wykonaj pakiet

  4. Jak wyświetlić plan wykonywania zapytań w Azure Data Studio (SQL Server)

  5. Szybko wstawiaj 2 miliony wierszy do SQL Server