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;
Связанные термины
Анекдоты по теме
Преподаватель: — Что такое UNION? Студент: — Это когда ты берёшь два списка и склеиваешь их в один. Преподаватель: — А UNION ALL? Студент: — А это когда даже дубликаты не выкидываешь. Лень убирать повторы.
— Почему SELECT никогда не один? — Потому что у него всегда есть FROM. Без FROM он просто крик души без адресата.
Разработчик смотрит на код коллеги: SELECT * FROM a, b WHERE a.id = b.a_id — Это что, неявный JOIN? — Синтаксис из 1992 года. — Оно работает? — Да. Но использовать — моветон.