Для удаления определения таблицы и данных можно воспользоваться различными способами. Они будут описаны в настоящем разделе.
Простое удаление
Для удаления данных и определения таблицы может использоваться команда DROP TABLE. Данные не нужно удалять отдельно. Все триггеры базы данных будут удалены автоматически при уничтожении таблицы.
Если требуется удалить только данные и оставить определения, можно воспользоваться либо командой DELETE, либо командой truncate для удаления строк. Для команды delete может быть выполнен откат; для команды truncate откат не может быть выполнен.
ВНИМАНИЕ!
Как только таблица уничтожена, ее больше не существует — для команды DROP не может быть выполнен откат.
SQL> DROP TABLE mytab;
Table dropped.
Удаление таблиц с ограничениями
Если на таблицу ссылаются другие таблицы посредством ограничения внешнего ключа, такую таблицу нельзя уничтожить простым удалением. При попытке это сделать будет получено сообщение об ошибке, указывающее, что в других таблицах имеются ограничения внешнего ключа, которые ссылаются на эту таблицу.
SQL> DROP TABLE mytab;
DROP TABLE mytab
*.
ERROR at line 1:
ORA-2 266: unique/primary keys in table referenced by
enabled foreign keys
Можно либо удалить ограничения внешнего ключа вручную, либо с использованием опции CASCADE CONSTRAINT заставить команду drop table выполнить за вас работу по удалению ограничений, как показано в следующем примере кода.
SQL> DROP TABLE mytab CASCADE CONSTRAINTS;
Table dropped.
Еще один способ, которым администратор базы данных может воспользоваться для удаления множества таблиц в одной команде, состоит в использовании команды drop tablespace с опцией INCLUDING CONTENTS. Этим способом нужно пользоваться с осторожностью.
Контрольные вопросы и задания
- 1. Каково назначение оператора CREATE TABLE?
- 2. Какие параметры влияют на то, как хранится таблица
в БД?
- 3. Как оценить объем памяти, необходимый для таблицы?
- 4. Как воссоздать таблицу?
- 5. Приведите описания определений таблиц.
- 6. Как модифицировать таблицу?
- 7. Какие бывают способы удаления таблиц?