sql >> Databáze >  >> RDS >> Sqlserver

Vytvořte dočasnou tabulku založenou na jiné tabulce na serveru SQL Server

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)

  1. Načte návratové hodnoty pole pl/sql v jazyce Java

  2. Chyba Sloupec dotazu SQL neexistuje

  3. Jak fungují implicitní transakce na serveru SQL Server

  4. Co je schéma databáze?