Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Buat Tabel Sementara Berdasarkan Tabel Lain di SQL Server

Di SQL Server Anda dapat membuat tabel sementara berdasarkan tabel lain dengan menggunakan SELECT... INTO sintaksis.

Anda dapat membuat tabel dengan atau tanpa data. Dengan kata lain, Anda dapat menyalin data dari tabel asli jika diinginkan, atau Anda dapat membuat tabel tanpa data apa pun.

Contoh 1 – Membuat Tabel Dengan Data

Berikut adalah contoh membuat tabel sementara berdasarkan tabel persisten, dan menyalin semua data dalam prosesnya.

USE Test;
SELECT 
  CatId,
  CatName,
  Phone
INTO #TempCatsAllData
FROM dbo.Cats;

Mari kita lihat hasilnya.

SELECT * FROM #TempCatsAllData;

Hasil:

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 1       | Garfield  | 9871237654 |
| 2       | Felix     | 8871237651 |
| 3       | Tom       | 7871237652 |
| 4       | Fetch     | 6871237653 |
+---------+-----------+------------+

Anda juga dapat memfilter data dengan WHERE klausa jika Anda perlu.

Contoh 2 – Membuat Tabel Tanpa Data

Berikut ini contoh membuat tabel tanpa data.

USE Test;
SELECT 
  CatId,
  CatName,
  Phone
INTO #TempCatsNoData
FROM dbo.Cats
WHERE 1 = 0;

Dalam contoh ini, saya menggunakan WHERE 1 = 0 untuk tidak mengembalikan data.

Contoh 3 – Periksa Tabelnya

Dalam contoh ini saya membandingkan dua tabel sementara dengan tabel asli. Saya melakukan ini dengan menanyakan sys.columns tampilan katalog di database asli (untuk tabel asli) dan di tempdb database (untuk tabel sementara).

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%';

Hasil:

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. Jelajahi Penyebab, &Solusi Korupsi Database SQL Server

  2. Baris SQL ke Kolom

  3. Enkripsi Cadangan Basis Data SQL Server

  4. 4 Kegiatan Pemantauan Basis Data Utama Yang Harus Diketahui Setiap DBA

  5. Mencapai batas parameter 2100 (SQL Server) saat menggunakan Berisi ()