ALTER, DROP, TRUNCATE
206 мин
По мере роста проекта меняются и таблицы: нужен новый столбец, меняются имена, ненужные таблицы удаляются. Команды этого урока пробуйте в свободном режиме.
ALTER TABLE — изменение таблицы
Добавить столбец:
ALTER TABLE books ADD COLUMN pages int;Удалить столбец:
ALTER TABLE books DROP COLUMN pages;Переименовать столбец:
ALTER TABLE books RENAME COLUMN year TO published_year;Переименовать таблицу:
ALTER TABLE books RENAME TO library_books;Изменить тип столбца:
ALTER TABLE books ALTER COLUMN title TYPE varchar(300);Добавить ограничение:
ALTER TABLE books ADD CONSTRAINT price_positive CHECK (price >= 0);DROP — удаление
DROP TABLE loans;
DROP DATABASE kutubxona;DROP не отменить: пропадает и таблица, и все данные в ней. Если не уверены, что таблица существует: DROP TABLE IF EXISTS loans;.
Если на таблицу ссылается другая через внешний ключ, удалить её нельзя — сначала удалите связанную (дочернюю) таблицу.
В PostgreSQL DROP TABLE books CASCADE; удалит и ссылающиеся внешние ключи. Осторожно!
TRUNCATE — быстрая очистка
TRUNCATE TABLE loans;Таблица остаётся, но становится пустой. Результат тот же, что у DELETE FROM loans;, но TRUNCATE намного быстрее (не удаляет строки по одной) и сбрасывает автоматическую нумерацию.
В PostgreSQL, чтобы сбросить счётчик: TRUNCATE loans RESTART IDENTITY;
Что когда использовать
| Команда | Что остаётся | Можно отменить? |
|---|---|---|
DELETE FROM t WHERE … |
таблица, остальные строки | внутри транзакции — да |
TRUNCATE t |
таблица (пустая) | почти нет |
DROP TABLE t |
ничего | нет |
Запомните
ALTER TABLE … ADD / DROP / RENAME COLUMNменяет структуру таблицы.DROPудаляет полностью,TRUNCATEочищает содержимое.- Связанные таблицы удаляйте, начиная с дочерней.