Оператор DROP TABLE. Видалення таблиць
Перед вивченням даної теми рекомендується ознайомитись з наступною темою:
Зміст
- 1. Оператор DROP TABLE. Загальні поняття. Синтаксис оголошення
- 2. Обмеження на використання оператора DROP TABLE
- 3. Приклад використання оператора DROP TABLE. Видалення таблиці
- 4. Приклад переміщення даних з однієї таблиці в іншу
- Споріднені теми
Пошук на інших ресурсах:
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 накладаються наступні обмеження:
- Оператор DROP TABLE не може використовуватись для видалення таблиці, на яку посилається обмеження зовнішнього ключа (FOREIGN KEY). У цьому випадку потрібно спочатку видалити це обмеження або видалити посилальну таблицю.
- Якщо потрібно видалити дві таблиці, які зв’язані зовнішнім та первинним ключами, то першою видаляється та таблиця, яка посилається (має зовнішній ключ FOREIGN KEY).
- При видаленні таблиці, видаляються всі правила або параметри за замовчуванням, тригери та обмеження, що зв’язані з цією таблицею. Повторне створення таблиці вимагатиме побудови нових правил, тригерів, обмежень та параметрів за замовчуванням.
⇑
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 потрібно видалити.
Розв’язок.
Послідовність дій при копіюванні даних наступна:
- Створити таблицю Student з допомогою оператора CREATE TABLE.
- Записати в таблицю Student дані. Для цього використати оператор INSERT INTO + VALUES.
- Вивести таблицю Student для контролю (оператор SELECT *).
- Створити таблицю Aspirant оператором CREATE TABLE.
- Скопіювати дані з таблиці Student в таблицю Aspirant. Тут використовується оператор INSERT INTO + SELECT + FROM.
- Видалити таблицю Student оператором DROP TABLE.
- Вивести таблицю 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.
Рисунок 1. Перенесення даних з однієї таблиці в іншу. Результат роботи програми
⇑
Споріднені теми
⇑