Published on

July 8, 2019

Понимание оператора SQL DROP TABLE

В SQL Server оператор DROP TABLE используется для удаления одной или нескольких таблиц из базы данных. Этот оператор полностью удаляет структуру таблицы и все связанные индексы, статистику, разрешения, триггеры и ограничения. Однако он не удаляет хранимые процедуры и представления, которые ссылаются на таблицу, поэтому их необходимо явно удалить.

Прежде чем мы углубимся в синтаксис и примеры оператора DROP TABLE, давайте сначала поймем, почему мы можем захотеть его использовать. Одна из распространенных ситуаций – когда нам нужно сделать массовые изменения в таблице. Многие администраторы баз данных делают резервную копию на уровне таблицы перед внесением любых изменений, что включает создание другой резервной таблицы с другим именем. Однако эти резервные таблицы могут накапливаться со временем и занимать ненужное дисковое пространство. Кроме того, если вы выполняете обслуживание индексов для всех индексов, это может добавить дополнительные нагрузки на систему. В таких случаях регулярная очистка путем удаления ненужных таблиц может быть полезной.

Синтаксис оператора SQL DROP TABLE выглядит следующим образом:

DROP TABLE [имя_базы_данных].[имя_схемы].[имя_таблицы]

Параметры, используемые в этом синтаксисе, следующие:

  • имя_базы_данных: Указывает имя базы данных, в которой находится таблица. Этот параметр можно пропустить, если команда удаления выполняется в текущем контексте базы данных.
  • имя_схемы: Указывает имя схемы, к которой принадлежит объект. Если объект принадлежит схеме по умолчанию (dbo), этот параметр можно пропустить, так как SQL Server автоматически использует схему dbo. Однако, если объект принадлежит схеме, отличной от схемы по умолчанию, имя схемы должно быть указано.
  • имя_таблицы: Указывает имя таблицы, которую мы хотим удалить.

Теперь давайте рассмотрим несколько примеров, чтобы лучше понять, как работает оператор DROP TABLE.

Пример 1: Удаление одной таблицы

Чтобы удалить одну таблицу, вы можете выполнить следующий запрос:

DROP TABLE AdventureWorks2017.HumanResources.Employee13072019;

Если таблица принадлежит схеме по умолчанию (dbo), вы также можете использовать следующий запрос:

USE AdventureWorks2017;
DROP TABLE HumanResources.Employee13072019;

Пример 2: Удаление нескольких таблиц

Вы можете удалить несколько таблиц одновременно, используя один оператор DROP TABLE. Например, давайте создадим три таблицы, а затем удалим их:

CREATE TABLE Sam (id INT);
CREATE TABLE Amp (id INT);
CREATE TABLE Rmp (id INT);

DROP TABLE Sam, Amp, Rmp;

Пример 3: Удаление таблицы с ограничением внешнего ключа

Если у таблицы есть ограничение внешнего ключа, вы не можете удалить ее напрямую. Вам нужно либо удалить отношение внешнего ключа, либо сначала удалить дочернюю таблицу. Давайте разберем это на примере:

CREATE TABLE Department (
  Dept_id INT IDENTITY PRIMARY KEY,
  Dept_name VARCHAR(50) NOT NULL
);

CREATE TABLE Employee1 (
  EmpID INT IDENTITY PRIMARY KEY,
  EmpName VARCHAR(50) NOT NULL,
  Dept_id INT NOT NULL,
  FOREIGN KEY (Dept_id) REFERENCES department (dept_id)
);

DROP TABLE Employee1;
DROP TABLE Department;

Пример 4: Удаление временной таблицы

Вы также можете удалить временную таблицу аналогичным образом, как и обычную таблицу. Например:

CREATE TABLE #temp1 (col1 INT);

INSERT INTO #temp1 VALUES (100);

DROP TABLE #temp1;

Пример 5: Удаление таблицы с использованием IF EXISTS

До SQL Server 2016 разработчики использовали оператор IF EXISTS для проверки существования таблицы перед ее удалением. Это делалось для избежания ошибок при попытке удалить таблицу, которая не существует. Начиная с SQL Server 2016, вы можете использовать новый синтаксис оператора DROP TABLE для достижения того же результата более коротким и простым способом. Вот пример:

DROP TABLE IF EXISTS Department;

Этот оператор удалит таблицу только в том случае, если она уже существует, что позволяет избежать дополнительных проверок.

Важно отметить, что при удалении таблицы, которая используется в хранимых процедурах или представлениях, SQL Server не выдает сообщение об ошибке. Чтобы убедиться, что процедуры и представления могут функционировать правильно после удаления таблицы, следует проверить зависимости и разрешить их соответствующим образом.

Заключение

В этой статье мы исследовали оператор DROP TABLE SQL и его использование для удаления таблиц из базы данных SQL. Мы рассмотрели, как удалить одну и несколько таблиц, обработать ограничения внешнего ключа, удалить временные таблицы и использовать синтаксис IF EXISTS для избежания ошибок. Важно быть осторожным при удалении таблиц, особенно в производственной базе данных, и учитывать зависимости и влияние на другие объекты.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.