В этом руководстве вы узнаете, как использовать оператор SQL Server DROP TABLE для удаления одной или нескольких таблиц из базы данных.
Иногда вам нужно удалить таблицу, которая больше не используется. Для этого используйте следующий оператор DROP TABLE:
DROP TABLE [IF EXISTS] [database_name.][schema_name.]table_name;
В этом синтаксисе:
- Сначала укажите имя таблицы, которую нужно удалить.
- Во-вторых, укажите имя базы данных, в которой была создана таблица, и имя схемы, к которой принадлежит таблица. Имя базы данных необязательно. Если вы его пропустите, оператор DROP TABLE удалит таблицу в текущей подключенной базе данных.
- В-третьих, используйте предложение IF EXISTS, чтобы удалить таблицу, только если она существует. Предложение IF EXISTS поддерживается с SQL Server 2016 13.x. Если вы удалите таблицу, которая не существует, вы получите ошибку. Предложение IF EXISTS условно удаляет таблицу, если она уже существует.
Когда SQL Server удаляет таблицу, он также удаляет все данные, триггеры, ограничения, разрешения этой таблицы. Более того, SQL Server явно не удаляет представления и хранимые процедуры, ссылающиеся на удаленную таблицу. Поэтому, чтобы явно удалить эти зависимые объекты, необходимо использовать операторы DROP VIEW и DROP PROCEDURE.
SQL Server позволяет удалить несколько таблиц одновременно с помощью одного оператора DROP TABLE следующим образом:
DROP TABLE [database_name.][schema_name.]table_name_1,
[имя_схемы.]имя_таблицы_2,
…
[имя_схемы.]имя_таблицы_n;
Примеры SQL Server DROP TABLE
Давайте рассмотрим несколько примеров использования оператора SQL Server DROP TABLE.
A) Удалить таблицу, которая не существует
Следующий оператор удаляет таблицу с именем «Доходы» в схеме продаж:
DROP TABLE IF EXISTS sales.revenues;
В этом примере таблица доходов не существует. Поскольку используется предложение IF EXISTS, оператор выполняется успешно, и ни одна таблица не удаляется.
B) Пример удаления одной таблицы
Следующий оператор создает новую таблицу с именем delivery в схеме sales:
CREATE TABLE sales.delivery( delivery_id INT PRIMARY KEY, delivery_note VARCHAR(255) NOT NULL, delivery_date DATE NOT NULL );
Чтобы удалить таблицу доставки, используйте следующий оператор:
DROP TABLE sales.delivery;
C) Пример удаления таблицы с ограничением внешнего ключа
Следующий оператор создает две новые таблицы с именами suppliers_groups и suppliers в схеме закупок:
CREATE SCHEMA procurement; GO CREATE TABLE procurement.supplier_groups( group_id INT IDENTITY PRIMARY KEY, group_name VARCHAR(50) NOT NULL ); CREATE TABLE procurement.suppliers( supplier_id INT IDENTITY PRIMARY KEY, supplier_name VARCHAR(50) NOT NULL, group_id INT NOT NULL, FOREIGN KEY(group_id) REFERENCES procurement.supplier_groups(group_id) );
Давайте попробуем удалить таблицу suppliers_groups:
DROP TABLE procurement.supplier_groups;
SQL Server выдал следующую ошибку:
Could not drop object 'procurement.supplier_groups' because it is referenced by a FOREIGN KEY constraint.
SQL Server не позволяет удалять таблицу, на которую ссылается внешнее ограничение. Чтобы удалить эту таблицу, необходимо сначала удалить ссылающееся ограничение внешнего ключа или ссылающуюся таблицу. В этом случае необходимо сначала удалить ограничение внешнего ключа в таблице suppliers или таблице suppliers, прежде чем удалять таблицу suppliers_groups.
DROP TABLE procurement.supplier_groups; DROP TABLE procurement.suppliers;
Если вы используете один оператор DROP TABLE для удаления обеих таблиц, ссылающаяся таблица должна быть указана первой, как показано в запросе ниже:
DROP TABLE procurement.suppliers, procurement.supplier_groups;
В этом руководстве вы узнали, как использовать оператор SQL Server DROP TABLE для удаления одной или нескольких таблиц из базы данных.