DROP TABLE (Transact-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

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 dijatuhkan harus dihilangkan secara eksplisit dengan menggunakan DROP VIEW atau DROP PROCEDURE. Untuk melaporkan dependensi pada tabel, gunakan sys.dm_sql_referencing_entities.

Topic link iconKonvensi Sintaksis T-SQL

Sintaks

-- Syntax for SQL Server and Azure SQL Database  
  
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 dan 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 adalah tempdb dan object_name dimulai dengan #. Azure SQL Database tidak mendukung nama empat bagian.

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

Secara kondisional menghilangkan tabel hanya jika sudah ada.

nama_skema
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 primer 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 primer 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 mengikat 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 sampai 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 menghilangkan tabel ledger dan objek dependennya - mereka 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

A. 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 database AdventureWorks2012 . Contoh dapat dijalankan dari database apa pun pada instans server.

DROP TABLE AdventureWorks2012.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 menghilangkan 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 (SQL bertransaksi)
sp_spaceused (SQL Bertransaksi)
TRUNCATE TABLE (transact-SQL)
DROP VIEW (SQL Bertransaksi)
DROP PROCEDURE (Transact-SQL)
EVENTDATA (SQL Bertransaksi)
sys.sql_expression_dependencies (SQL Bertransaksi)