Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте временна таблица на базата на друга таблица в SQL Server

В 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 – Проверете таблиците

В този пример сравнявам двете временни таблици с оригиналната таблица. Правя това, като отправям заявка към 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)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server рекурсивно самостоятелно присъединяване

  2. Как да се свържете с няколко SQL сървъра с едно щракване (група регистрирани сървъри) - SQL Server / TSQL урок, част 5

  3. Промяна на съществуваща колона в изчислена колона в SQL Server (пример за T-SQL)

  4. Как да вмъкнете прекъсване на ред в низ VARCHAR/NVARCHAR на SQL Server

  5. Транспонирайте набор от редове като колони в SQL Server 2000