DDL / СхемаСредний
ALTER TABLE
Изменяет структуру существующей таблицы: добавляет колонки, меняет типы, добавляет ограничения.
Синтаксис
ALTER TABLE table
ADD COLUMN col type [constraints];
DROP COLUMN col;
ALTER COLUMN col TYPE new_type;
ADD CONSTRAINT name CHECK (condition);Объяснение
ALTER TABLE — основная команда для изменения схемы. В PostgreSQL DDL транзакционен — можно откатить.
Осторожно в production:
- ADD COLUMN с NOT NULL DEFAULT — мгновенно с PostgreSQL 11+
- ALTER COLUMN TYPE — перезаписывает всю таблицу, долгая блокировка
- Для больших таблиц используй zero-downtime стратегии
Пример
-- Добавить колонку (быстро в PG11+)
ALTER TABLE users ADD COLUMN phone TEXT;
-- Добавить CHECK constraint
ALTER TABLE products
ADD CONSTRAINT price_positive CHECK (price > 0);
-- Переименовать колонку
ALTER TABLE users RENAME COLUMN fullname TO full_name;Связанные термины
Анекдоты по теме
— Почему не стоит использовать SELECT * в production коде? — Если добавить колонку — приложение сломается на неожиданном поле. — Если удалить — тоже сломается. — Больше данных по сети и из базы. — Covering index не работает. — Явно указывай колонки. Это документация запроса.
— Как называется программист, который сделал UPDATE без WHERE в production? — Бывший программист.
Оптимизатор запросов говорит медленному подзапросу: — Ты почему тормозишь? — Я каждую строчку с каждой сравниваю через IN. — Используй EXISTS. — А я знаю, что я существую? — Вот поэтому ты и тормоз.