DROP TABLE (Transact-SQL)
Удаляет одно или больше определений таблиц и все данные, индексы, триггеры, ограничения и разрешения для этих таблиц. Любое представление или хранимая процедура, ссылающаяся на удаленную таблицу, должна быть явно удалена с помощью инструкции DROP VIEW или DROP PROCEDURE. Отчет о зависимостях в таблице можно получить из представления sys.dm_sql_referencing_entities.
Синтаксис
-- 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 >[;]
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
database_name
Имя базы данных, в которой создана таблица.
База данных SQL Azure поддерживает формат трехкомпонентного имени имя_базы_данных.[имя_схемы].имя_объекта, если имя_базы_данных — это текущая база данных или tempdb, а имя_объекта начинается с символа #. База данных SQL Azure не поддерживает четырехкомпонентные имена.
IF EXISTS
Применимо к: SQL Server (SQL Server 2016 (13.x) до текущей версии.
Условное удаление таблицы только в том случае, если она уже существует.
schema_name
Имя схемы, которой принадлежит таблица.
table_name
Имя таблицы, предназначенной для удаления.
Замечания
Инструкцию DROP TABLE нельзя использовать для удаления таблицы, на которую ссылается ограничение FOREIGN KEY. Сначала следует удалить ссылающееся ограничение FOREIGN KEY или ссылающуюся таблицу. Если и ссылающаяся таблица, и таблица, содержащая первичный ключ, удаляются с помощью одной инструкции DROP TABLE, ссылающаяся таблица должна быть первой в списке.
Несколько таблиц можно удалить из любой базы данных. Если удаляемая таблица ссылается на первичный ключ другой таблицы, которая также удаляется, ссылающаяся таблица с внешним ключом должна стоять в списке перед таблицей, содержащей указанный первичный ключ.
При удалении таблицы относящиеся к ней правила и значения по умолчанию теряют привязку, а любые связанные с таблицей ограничения или триггеры автоматически удаляются. Если таблица будет создана заново, нужно будет заново привязать все правила и значения по умолчанию, заново создать триггеры и добавить необходимые ограничения.
При удалении всех строк в таблице с помощью инструкции DELETE tablename или TRUNCATE TABLE таблица продолжает существовать, пока она не будет удалена.
Большие таблицы и индексы, использующие более 128 экстентов, удаляются в два этапа: логически и физически. На логическом этапе существующие единицы распределения, используемые в таблице, отмечаются для освобождения и остаются заблокированными до фиксации транзакции. В физической фазе страницы IAM, помеченные для освобождения, физически удаляются пакетами.
При удалении таблицы, которая содержит столбец VARBINARY(MAX) с атрибутом FILESTREAM, не будут удалены никакие данные, которые хранятся в файловой системе.
При удалении таблицы реестра ее зависимые объекты (таблица журнала и представление реестра) также удаляются. Таблицу журнала или представление реестра нельзя удалить напрямую. При удалении таблиц реестра и их зависимых объектов система применяет семантику обратимого удаления — в действительности они не удаляются, а помечаются как удаленные в представлениях системного каталога и переименовываются. Дополнительные сведения см. в разделе Рекомендации и ограничения для реестра.
Инструкции DROP TABLE и CREATE TABLE нельзя выполнять для одной таблицы в одном пакете. В противном случае может произойти непредвиденная ошибка.
Разрешения
Необходимо разрешение ALTER на схему, к которой принадлежит эта таблица, разрешение CONTROL для этой таблицы или членство в предопределенной роли базы данных db_ddladmin .
Если инструкция предусматривает удаление таблицы реестра, требуется разрешение ALTER LEDGER .
Примеры
А. Удаление таблицы из текущей базы данных
Следующий пример удаляет таблицу ProductVendor1 , ее данные и индексы из текущей базы данных.
DROP TABLE ProductVendor1 ;
B. Удаление таблицы из другой базы данных
Следующий пример удаляет таблицу SalesPerson2 из базы данных AdventureWorks2022 . Пример может быть выполнен из любой базы данных на экземпляре сервера.
DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;
C. Удаление временной таблицы
Следующий пример создает временную таблицу, проверяет ее наличие, удаляет ее и снова проверяет ее наличие. В этом примере не используется синтаксис IF EXISTS, доступный начиная с 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. Удаление таблицы с помощью IF EXISTS
Применимо к: SQL Server (SQL Server 2016 (13.x) до текущей версии.
В следующем примере создается таблица с именем T1. Затем вторая инструкция удаляет таблицу. Третья инструкция не выполняет никаких действий, так как таблица уже удалена, однако это не вызывает ошибку.
CREATE TABLE T1 (Col1 INT); GO DROP TABLE IF EXISTS T1; GO DROP TABLE IF EXISTS T1;
Удаление таблиц (компонент Database Engine)
Вы можете удалить таблицу из базы данных в SQL Server с помощью SQL Server Management Studio или Transact-SQL.
Каждое удаление таблицы следует тщательно планировать. Если на таблицу ссылаются существующие запросы, представления, определяемые пользователем функции, хранимые процедуры или программы, то удаление сделает эти объекты недействительными.
В этом разделе
- Перед началом работыОграниченияБезопасность
- Удаление таблицы с помощью следующих средств:Среда SQL Server Management StudioTransact-SQL
Перед началом
Ограничения
- Инструкцию DROP TABLE нельзя использовать для удаления таблицы, на которую ссылается ограничение FOREIGN KEY. Сначала следует удалить ссылающееся ограничение FOREIGN KEY или ссылающуюся таблицу. Если и ссылающаяся таблица, и таблица, содержащая первичный ключ, удаляются с помощью одной инструкции DROP TABLE, ссылающаяся таблица должна быть первой в списке.
- При удалении таблицы относящиеся к ней правила и значения по умолчанию теряют привязку, а любые связанные с таблицей ограничения или триггеры автоматически удаляются. Если таблица будет создана заново, нужно будет заново привязать все правила и значения по умолчанию, заново создать триггеры и добавить необходимые ограничения.
- При удалении таблицы, которая содержит столбец varbinary (max) с атрибутом FILESTREAM, не будут удалены никакие данные, которые хранятся в файловой системе.
- Инструкции DROP TABLE и CREATE TABLE нельзя выполнять для одной таблицы в одном пакете. В противном случае может произойти непредвиденная ошибка.
- Любые представления или хранимые процедуры, которые ссылаются на удаляемую таблицу, необходимо явно удалить или изменить, чтобы убрать ссылку на таблицу.
Безопасность
Разрешения
Необходимо разрешение ALTER на схему, к которой принадлежит эта таблица, разрешение CONTROL для этой таблицы или членство в предопределенной роли базы данных db_ddladmin .
Использование среды SQL Server Management Studio
Удаление таблицы из базы данных
- В обозревателе объектов выберите таблицу, которую необходимо удалить.
- Щелкните таблицу правой кнопкой мыши и в контекстном меню выберите Удалить .
- Появится окно подтверждения удаления. Нажмите кнопку Да.
Примечание При удалении таблицы автоматически удаляются все связи с ней.
Использование Transact-SQL
Удаление таблицы в редакторе запросов
- В обозревателе объектовподключитесь к экземпляру компонента Компонент Database Engine.
- На стандартной панели выберите пункт Создать запрос.
- Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.
DROP TABLE dbo.PurchaseOrderDetail;
Дополнительные сведения см. в разделе DROP TABLE (Transact-SQL)
Удаление таблицы
Таблицу можно удалить через Data Management или через SQL Editor.
- Удаление таблицы через Data Management
- Удаление таблицы через SQL Editor
Удаление таблицы через Data Management
- Выберите EI Enterprise Intelligence → Data Lake Insight .
- В боковом меню слева выберите Data Management → Databases and Tables .
- Нажмите на имя базы данных, которая содержит нужную таблицу.

- В строке с нужной таблицей нажмите Drop .

- Нажмите ОК .

Удаление таблицы через SQL Editor
- Выберите EI Enterprise Intelligence → Data Lake Insight .
- В боковом меню слева выберите SQL Editor .
- Выберите вкладку Databases и нажмите на имя базы данных, которая содержит нужную таблицу.

- В строке с нужной таблицей нажмите на значок
и выберите из списка Drop Table . 
- Нажмите ОК .

Как полностью очистить таблицу sql
Полностью очистить таблицу, не удаляя её можно с помощью запроса DELETE . Мы указываем имя таблицы, но опускаем блок WHERE . Тогда удаляются абсолютно все записи, вне зависимости от условий, ведь их нет. 🙂
DELETE FROM wiped_table_name; -- Мы очистили таблицу wiped_table_name
Кроме DELETE без условий можно использовать TRUNCATE . У неё есть свои особенности. Самая главная, она быстрее DELETE , так как не сканирует таблицы перед очисткой и наиболее полезна для очистки больших таблиц.
TRUNCATE cars, cups, parrots; -- Тут можно перечислять сколько угодно таблиц