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)