Как удалить таблицу в Microsoft SQL Server на T-SQL

Приветствую Вас на сайте Info-Comp.ru! Сегодня в этой заметке мы рассмотрим процесс удаления таблиц в Microsoft SQL Server. Вы узнаете, как удалить одну таблицу, как удалить несколько таблиц, а также как удаляются временные таблицы в SQL Server. Кроме этого, Вы узнаете, как проверить существование таблицы перед ее удалением.

Удаление таблиц на T-SQL в Microsoft SQL Server

Инструкция DROP TABLE в T-SQL

DROP TABLE – это инструкция T-SQL, с помощью которой удаляются таблицы в Microsoft SQL Server.

Команда DROP относится к группе операторов определения данных (Data Definition Language – DDL).

DROP TABLE полностью удаляет структуру таблицы и связанные с ней индексы, триггеры, ограничения, разрешения и статистику. Инструкцию нельзя использовать для удаления таблицы, на которую ссылается ограничение FOREIGN KEY, в таких случаях сначала следует удалить ссылающееся ограничение FOREIGN KEY или ссылающуюся таблицу.

DROP TABLE не удаляет функции, хранимые процедуры и представления, которые ссылаются на таблицу, поэтому мы должны проверить все зависимости перед удалением таблицы и внести соответствующие изменения в их определение, чтобы избежать возникновения непредвиденных ситуаций в работе этих функции, процедур и представлений.

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

Синтаксис DROP TABLE

DROP TABLE [IF EXISTS] [database_name].[schema_name].[table_name] [ ,…n ];

Где,

  • DROP TABLE – команда удаления таблицы;
  • IF EXISTS – параметр, который проверяет существование таблицы перед ее удалением (данный параметр можно использовать в SQL Server 2016 и более новых версиях);
  • database_name – имя базы данных, в которой расположена таблица. Можно и не указывать, тогда инструкция будет выполняться в контексте текущей базы данных;
  • schema_name – имя схемы, которой принадлежит таблица. Можно и не указывать, если таблица создана в схеме по умолчанию (dbo), так как SQL Server автоматически использует эту схему, однако если таблица принадлежит другой схеме, то мы должны указать ее название в процессе удаления таблицы;
  • ,…n – говорит о том, что через запятую можно указать несколько таблиц.

Удаление одной таблицы в SQL Server

Чтобы удалить одну таблицу в Microsoft SQL Server, необходимо написать инструкцию DROP TABLE и указать название таблицы.

Для примера давайте создадим таблицу Goods, а затем удалим ее с помощью инструкции DROP TABLE.

Создание таблицы

   
   CREATE TABLE Goods
   (
     ProductId INT IDENTITY(1,1) NOT NULL,
     ProductName VARCHAR(100) NOT NULL,
     Price MONEY NULL
   );
   GO

Удаление таблицы

   
   DROP TABLE Goods;

Скриншот 1

Заметка! Установка Microsoft SQL Server 2019 Express на Windows 10.

Удаление нескольких таблиц на T-SQL в SQL Server

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

Допустим, что у нас есть две таблицы: Table_1 и Table_2. И нам их необходимо удалить.

Для этого мы можем написать следующую инструкцию.

Создание таблиц

   
   CREATE TABLE Table_1
   (
     ProductId INT IDENTITY(1,1) NOT NULL,
     ProductName VARCHAR(100) NOT NULL,
     Price MONEY NULL
   );

   GO

   CREATE TABLE Table_2
   (
     ProductId INT IDENTITY(1,1) NOT NULL,
     ProductName VARCHAR(100) NOT NULL,
     Price MONEY NULL
   );
   GO

Удаление таблиц

   
   DROP TABLE Table_1, Table_2;

Скриншот 2

Примечание! Если с помощью одной инструкции DROP TABLE удаляются и ссылающаяся таблица, и таблица, содержащая первичный ключ, то ссылающаяся таблица должна быть указана первой в списке.

Удаление таблицы с проверкой на существование этой таблицы

Начиная с 2016 версии Microsoft SQL Server стало возможно указывать параметр IF EXISTS, который позволяет предварительно проверить существование объекта перед его непосредственным удалением.

Теперь нет необходимости писать различные дополнительные условные конструкции IF, чтобы перед удалением проверить, существует ли таблица или нет, инструкция DROP IF EXISTS сделает эту проверку сама.

Более подробно про эту возможность мы говорили в статье – Инструкция DROP IF EXISTS в языке T-SQL.

   
   DROP TABLE IF EXISTS Goods;

Скриншот 3

В данном случае таблицы Goods не существует, однако инструкция успешно выполнилась.

Заметка! Начинающим рекомендую посмотреть мои видеокурсы по T-SQL, с помощью которых Вы «с нуля» научитесь работать с SQL и программировать на T-SQL.

Удаление временной таблицы на T-SQL

Временные таблицы мы можем принудительно удалять точно так же, как и обычные таблицы.

Создание временной таблицы

   
   CREATE TABLE #TestTable
   (
     ProductId INT IDENTITY(1,1) NOT NULL,
     ProductName VARCHAR(100) NOT NULL,
     Price MONEY NULL
   );
   GO

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

   
   DROP TABLE #TestTable;

Скриншот 4

В этом примере мы создали временную таблицу, а затем удалили ее.

Заметка! Много статей на тему языка T-SQL Вы можете найти в разделе сайта – Microsoft SQL Server и язык T-SQL.

На сегодня это все, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 1
  1. Админ
    Админ (автор)

    Приглашаю всех желающих пройти мои онлайн-курсы по изучению языка T-SQL – https://self-learning.ru/courses/t-sql
    На курсах используется моя авторская последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL. Каждый курс включает огромное количество материалов: видео, текстовый материал, тесты, домашние задания, скрипты, а также сертификат о прохождении.
    На курсах Вы можете заниматься в комфортном для себя темпе не выходя из дома в любое удобное для Вас время.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.