Базы данных. Оператор DROP TABLE. Удаление таблиц

Оператор DROP TABLE. Удаление таблиц

Перед изучением данной темы рекомендуется ознакомиться со следующей темой:


Содержание


Поиск на других ресурсах:

1. Оператор DROP TABLE. Общие понятия. Синтаксис объявления

В языке T-SQL для удаления таблицы используется оператор DROP TABLE. Оператор может удалить от одной до нескольких таблиц. Кроме самих таблиц удаляются все связанные с ними:

  • данные;
  • индексы;
  • триггеры;
  • ограничения;
  • спецификации разрешений.

В упрощенном виде синтаксис использования оператора DROP TABLE следующий

DROP TABLE [Table_Name]

здесь

  • Table_Name – имя удаляемой таблицы.

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

DROP TABLE IF EXISTS [Table_Name]

здесь

  • Table_Name – имя таблицы, которую нужно удалить.

В этом случае при попытке удаления несуществующей таблицы программа на T-SQL не будет генерировать ошибку и продолжит свое выполнение.

 

2. Ограничения на использование оператора DROP TABLE

При использовании оператора DROP TABLE накладываются следующие ограничения.

  1. Оператор DROP TABLE не может использоваться для удаления таблицы, на которую ссылается ограничение внешнего ключа (FOREIGN KEY). В этом случае нужно сначала удалить это ограничение или удалить ссылочную таблицу.
  2. Если нужно удалить две таблицы, связанные внешним и первичным ключами, то первой удаляется та таблица, которая ссылается (имеет внешний ключ FOREIGN KEY).
  3. При удалении таблицы удаляются все правила или параметры по умолчанию, триггеры и ограничения, связанные с этой таблицей. Повторное создание таблицы потребует построения новых правил, триггеров, ограничений и параметров по умолчанию.

 

3. Пример использования оператора DROP TABLE. Удаление таблицы

В примере с помощью оператора CREATE TABLE сначала создается тестовая таблица с именем MyTable, которая имеет следующие поля:

  • поле A типа INT. Это первичный ключ. Поле имеет ограничение NOT NULL;
  • поле B типа FLOAT;
  • поле C типа VARCHAR(20).

 

/* Оператор DROP TABLE - Удаление таблицы */

/* 1. Создать таблицу MyTable */
CREATE TABLE [MyTable] (
  A INT NOT NULL PRIMARY KEY,
  B FLOAT,
  C VARCHAR(20),
);

/*
Результат.
-----------------------------
|   A |   B   |     C       |
-----------------------------
| INT | FLOAT | VARCHAR(20) |
-----------------------------
*/

/* 2. Удаление таблицы MyTable */
DROP TABLE IF EXISTS [MyTable]

 

4. Пример перемещения данных из одной таблицы в другую

Условие задачи.

Задана таблица Student, содержащая поля и заполненная некоторыми данными. Поля таблицы следующие:

  • ID_Student – поле-счетчик, уникальный идентификатор, первичный ключ. Поле имеет ограничение NOT NULL;
  • Name – имя студента. Поле имеет ограничение NOT NULL;
  • Address – адрес студента;
  • BirthDate – дата рождения;
  • PhoneNumber – телефон. Поле имеет ограничение NOT NULL.

Необходимо реализовать копирование данных из таблицы Student в таблицу Aspirant. Таблица – приемник Aspirant имеет следующие поля:

  • ID_Aspirant – поле-счетчик, уникальный идентификатор, первичный ключ. Поле имеет ограничение NOT NULL;
  • Name – имя аспиранта;
  • Address – адрес;
  • BirthDate – дата рождения;
  • PhoneNumber – телефон.

После копирования таблицу-оригинал Student необходимо удалить.

Решение.

Последовательность действий при копировании данных следующая:

  1. Создать таблицу Student с помощью оператора CREATE TABLE.
  2. Записать в таблицу Student данные. Для этого можно использовать оператор INSERT INTO + VALUES.
  3. Вывести таблицу Student для контроля (оператор SELECT*).
  4. Создать таблицу Aspirant оператором CREATE TABLE.
  5. Скопировать данные из таблицы Student в таблицу Aspirant. Здесь используется оператор INSERT INTO+SELECT+FROM.
  6. Удалить таблицу Student оператором DROP TABLE.
  7. Вывести таблицу Aspirant как результат (оператор SELECT*).

Текст программы на языке T-SQL следующий

 

/* Оператор DROP TABLE - Удаление таблицы */
/* 1. Создать таблицу Student */
CREATE TABLE [Student] (
  ID_Student INT NOT NULL PRIMARY KEY,
  [Name] VARCHAR(30) NOT NULL,
  [Address] VARCHAR(100),
  BirthDate DATE,
  PhoneNumber VARCHAR(20) NOT NULL
);

/*
Результат.
---------------------------------------------------------------------
| ID_Student |   Name     |     Address   | BirthDate | PhoneNumber |
---------------------------------------------------------------------
|     INT    | VARCHAR(20)|  VARCHAR(100) |   DATE    | VARCHAR(20) |
---------------------------------------------------------------------
*/

/* 2. Записать в таблицу Student данные */
INSERT INTO [Student]
  ( ID_Student, [Name], [Address], BirthDate, PhoneNumber )
  VALUES ( 1, 'Ivanov I.I.', 'Kiev', '08.08.2000', '777-7777' )

INSERT INTO [Student]
  ( ID_Student, [Name], [Address], BirthDate, PhoneNumber )
  VALUES ( 2, 'Petrenko P.P.', 'Lviv', '11.05.2001', '555-5555' )

INSERT INTO [Student]
  ( ID_Student, [Name], [Address], BirthDate, PhoneNumber )
  VALUES ( 3, 'Sidorenko S.S.', 'London', '20.01.2037', '444-444' )

/*
Результат.
---------------------------------------------------------------------
| ID_Student |   Name       |   Address   | BirthDate | PhoneNumber |
---------------------------------------------------------------------
|      1     | Ivanov I.I.  |    Kiev     | 08.08.2000|   777-7777  |
|      2     |Petrenko P.P. |    Lviv     | 11.05.2001|   555-5555  |
|      3     |Sidorenko S.S.|   London    | 20.01.2037|   444-4444  |
---------------------------------------------------------------------
*/

/* 3. Вывести данные из таблицы Student для контроля */
SELECT * FROM [Student]

/* 4. Создать таблицу Aspirant */
CREATE TABLE [Aspirant] (
  ID_Aspirant INT NOT NULL PRIMARY KEY,
  [Name] VARCHAR(30) NOT NULL,
  [Address] VARCHAR(100),
  BirthDate DATE,
  PhoneNumber VARCHAR(20) NOT NULL
)

/*
Результат.
---------------------------------------------------------------------
| ID_Aspirant |   Name     |   Address   | BirthDate | PhoneNumber |
---------------------------------------------------------------------
|     INT   | VARCHAR(20) | VARCHAR(100) |   DATE   | VARCHAR(20) |
---------------------------------------------------------------------
*/

/* 5. Скопировать данные из таблицы Aspirant в таблицу Student */
INSERT INTO [Aspirant]
  ( ID_Aspirant, [Name], [Address], BirthDate, PhoneNumber )
  SELECT *
  FROM [Student]

/* 6. Удалить таблицу Student оператором DROP TABLE */
DROP TABLE [Student]

/* 7. Вывести таблицу Aspirant */
SELECT * FROM Aspirant

/*
Результат.
---------------------------------------------------------------------
| ID_Aspirant|   Name       |  Address   | BirthDate | PhoneNumber  |
---------------------------------------------------------------------
|      1     | Ivanov I.I.  |     Kiev   | 08.08.2000|   777-7777   |
|      2     |Petrenko P.P. |     Lviv   | 11.05.2001|   555-5555   |
|      3     |Sidorenko S.S.|   London   | 20.01.2037|   444-4444   |
---------------------------------------------------------------------
*/

На рисунке 1 изображен результат выполнения программы в Microsoft SQL Server Management Studio.

SQL. Команда DROP TABLE. Перенос данных из одной таблицы в другую

Рисунок 1. Перенос данных из одной таблицы в другую. Результат работы программы

 


Связанные темы