DROP TABLE (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Warehouse di Microsoft Fabric

Menghapus satu atau beberapa definisi tabel dan semua data, indeks, pemicu, batasan, dan spesifikasi izin untuk tabel tersebut. Setiap tampilan atau prosedur tersimpan yang mereferensikan tabel yang dihilangkan harus dihilangkan secara eksplisit dengan menggunakan DROP VIEW atau DROP PROCEDURE. Untuk melaporkan dependensi pada tabel, gunakan sys.dm_sql_referencing_entities.

Konvensi sintaks transact-SQL

Sintaksis

-- Syntax for SQL Server, Azure SQL Database, Warehouse in Microsoft Fabric
  
DROP TABLE [ IF EXISTS ] { database_name.schema_name.table_name | schema_name.table_name | table_name } [ ,...n ]  
[ ; ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
  
DROP TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
[;]  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

database_name
Adalah nama database tempat tabel dibuat.

Azure SQL Database mendukung format nama tiga bagian database_name. [schema_name].object_name ketika database_name adalah database saat ini atau database_name tempdb dan object_name dimulai dengan #. Azure SQL Database tidak mendukung nama empat bagian.

JIKA ADA
Berlaku untuk: SQL Server (SQL Server 2016 (13.x) melalui versi saat ini).

Secara kondisional menghilangkan tabel hanya jika sudah ada.

schema_name
Adalah nama skema tempat tabel berada.

table_name
Adalah nama tabel yang akan dihapus.

Keterangan

DROP TABLE tidak dapat digunakan untuk menghilangkan tabel yang dirujuk oleh batasan KUNCI ASING. Batasan FOREIGN KEY yang mereferensikan atau tabel referensi harus terlebih dahulu dihilangkan. Jika tabel referensi dan tabel yang menyimpan kunci utama sedang dihilangkan dalam pernyataan DROP TABLE yang sama, tabel referensi harus dicantumkan terlebih dahulu.

Beberapa tabel dapat dihilangkan dalam database apa pun. Jika tabel yang dihilangkan mereferensikan kunci utama tabel lain yang juga sedang dihilangkan, tabel referensi dengan kunci asing harus dicantumkan sebelum tabel memegang kunci utama yang sedang direferensikan.

Saat tabel dihilangkan, aturan atau default pada tabel kehilangan pengikatannya, dan batasan atau pemicu apa pun yang terkait dengan tabel secara otomatis dihilangkan. Jika Anda membuat ulang tabel, Anda harus menggabungkan kembali aturan dan default yang sesuai, membuat ulang pemicu apa pun, dan menambahkan semua batasan yang diperlukan.

Jika Anda menghapus semua baris dalam tabel dengan menggunakan delete tablename atau menggunakan pernyataan TRUNCATE TABLE, tabel ada hingga dihilangkan.

Tabel dan indeks besar yang menggunakan lebih dari 128 tingkat dihilangkan dalam dua fase terpisah: logis dan fisik. Dalam fase logis, unit alokasi yang ada yang digunakan oleh tabel ditandai untuk dealokasi dan dikunci hingga transaksi dilakukan. Dalam fase fisik, halaman IAM yang ditandai untuk pembatalan alokasi secara fisik dihilangkan dalam batch.

Jika Anda menghilangkan tabel yang berisi kolom VARBINARY(MAX) dengan atribut FILESTREAM, data apa pun yang disimpan dalam sistem file tidak akan dihapus.

Saat tabel ledger dihilangkan, objek dependennya (tabel riwayat dan tampilan ledger) juga dihilangkan. Tabel riwayat atau tampilan ledger tidak dapat dihilangkan secara langsung. Sistem memberlakukan semantik penghapusan sementara saat menjatuhkan tabel ledger dan objek dependennya - tidak benar-benar dihilangkan, tetapi sebaliknya ditandai sebagai dihilangkan dalam tampilan katalog sistem dan diganti namanya. Untuk informasi selengkapnya, lihat Pertimbangan dan batasan Ledger.

Penting

DROP TABLE dan CREATE TABLE tidak boleh dijalankan pada tabel yang sama dalam batch yang sama. Jika tidak, kesalahan tak terduga dapat terjadi.

Izin

Memerlukan izin UBAH pada skema tempat tabel berada, izin CONTROL pada tabel, atau keanggotaan dalam peran database tetap db_ddladmin .

Jika pernyataan menghilangkan tabel ledger, ALTER LEDGER izin diperlukan.

Contoh

J. Menjatuhkan tabel di database saat ini

Contoh berikut menghapus ProductVendor1 tabel beserta data dan indeksnya dari database saat ini.

DROP TABLE ProductVendor1 ;  

B. Menjatuhkan tabel di database lain

Contoh berikut menghilangkan SalesPerson2 tabel dalam AdventureWorks2022 database. Contoh dapat dijalankan dari database apa pun pada instans server.

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;  

C. Menjatuhkan tabel sementara

Contoh berikut membuat tabel sementara, menguji keberadaannya, menghilangkannya, dan mengujinya lagi untuk keberadaannya. Contoh ini tidak menggunakan sintaks IF EXISTS yang tersedia dimulai dengan SQL Server 2016 (13.x).

CREATE TABLE #temptable (col1 INT);  
GO  
INSERT INTO #temptable  
VALUES (10);  
GO  
SELECT * FROM #temptable;  
GO  
IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL   
DROP TABLE #temptable;  
GO  
--Test the drop.  
SELECT * FROM #temptable;  

D. Menjatuhkan tabel menggunakan IF EXISTS

Berlaku untuk: SQL Server (SQL Server 2016 (13.x) melalui versi saat ini).

Contoh berikut membuat tabel bernama T1. Kemudian pernyataan kedua menjatuhkan tabel. Pernyataan ketiga tidak melakukan tindakan karena tabel sudah dihapus, namun tidak menyebabkan kesalahan.

CREATE TABLE T1 (Col1 INT);  
GO  
DROP TABLE IF EXISTS T1;  
GO  
DROP TABLE IF EXISTS T1;  

Lihat Juga

ALTER TABLE (Transact-SQL)
BUAT TABEL (Transact-SQL)
DELETE (Transact-SQL)
sp_help (T-SQL)
sp_spaceused (T-SQL)
POTONG TABEL (Transact-SQL)
DROP VIEW (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.sql_expression_dependencies (T-SQL)