SQL
DROP TABLE SQL: как удалить таблицу
DROP TABLE удаляет таблицу целиком. Это не очистка строк и не удаление одной записи, а удаление самого объекта базы данных: структуры таблицы, данных, ограничений и части связанных объектов
Если нужно удалить строки, обычно используют DELETE или TRUNCATE. Если нужно убрать таблицу как объект, используют DROP TABLE
Быстрый ответ
Минимальный запрос:
DROP TABLE users;
В SQL Server чаще указывают схему:
DROP TABLE dbo.users;
После выполнения таблица исчезнет из базы. Вернуть ее простой командой нельзя, поэтому перед удалением нужна резервная копия или хотя бы тестовая проверка
DROP TABLE и DELETE: в чем разница
DELETE удаляет строки из таблицы, но сама таблица остается
DELETE FROM users
WHERE id = 10;
DROP TABLE удаляет таблицу целиком
DROP TABLE users;
Если вы хотите очистить таблицу, но оставить ее структуру для дальнейшей работы, DROP TABLE не подходит
DROP TABLE и TRUNCATE
TRUNCATE TABLE быстро очищает таблицу от всех строк, но сама таблица остается
TRUNCATE TABLE users;
TRUNCATE не всегда доступен, если таблица участвует во внешних ключах. DROP TABLE тоже может не пройти, если на таблицу ссылаются другие таблицы
Как удалить таблицу безопасно
Перед удалением проверьте:
- правильную базу данных
- правильную схему
- точное имя таблицы
- есть ли бэкап
- есть ли внешние ключи
- используют ли таблицу процедуры, представления, отчеты или приложение
В SQL Server сначала полезно выполнить:
SELECT DB_NAME() AS current_database;
И проверить таблицу:
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'users';
Так вы снижаете шанс удалить таблицу не в той базе
Удаление, если таблица существует
В SQL Server:
DROP TABLE IF EXISTS dbo.users;
В MySQL:
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS users;
Такой запрос не упадет с ошибкой, если таблицы уже нет
Почему таблица может не удаляться
Чаще всего мешают зависимости:
- внешние ключи из других таблиц
- представления
- процедуры
- триггеры
- права доступа
- блокировки от активных сессий
Если таблица участвует в связи, сначала нужно понять, можно ли удалять связь и что произойдет с данными
Мини-практика
Создайте учебную таблицу и удалите ее:
CREATE TABLE demo_drop (
id INT PRIMARY KEY,
title VARCHAR(100)
);
DROP TABLE demo_drop;
После этого попробуйте выполнить:
SELECT *
FROM demo_drop;
База должна вернуть ошибку, потому что таблицы больше нет
Частые ошибки
- Использовать
DROP TABLE, когда нужно удалить одну строку - Удалять таблицу в рабочей базе без бэкапа
- Не проверять текущую базу через
DB_NAME() - Не учитывать внешние ключи
- Путать имя таблицы и имя базы
- Выполнять
DROP TABLE IF EXISTSв автоматическом скрипте без логирования
Что почитать дальше по SQL
Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:
- Как удалить столбец из таблицы SQL: ALTER TABLE DROP COLUMN
- ALTER TABLE в SQL: как добавить, изменить и удалить столбец
- CREATE TABLE SQL: как создать таблицу запросом
- DELETE SQL: как удалить строки из таблицы и не потерять лишние данные