Бази даних. Оператор 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. Перенесення даних з однієї таблиці в іншу. Результат роботи програми

 


Споріднені теми