Оператор 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. Перенос данных из одной таблицы в другую. Результат работы программы
⇑
Связанные темы
⇑