ALTER TABLE
Изменяет структуру существующей таблицы: добавляет колонки, меняет типы, добавляет ограничения.
ALTER TABLE table
ADD COLUMN col type [constraints];
DROP COLUMN col;
ALTER COLUMN col TYPE new_type;
ADD CONSTRAINT name CHECK (condition);Объяснение
Пример
-- Добавить колонку (быстро в 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;Связанные термины
Анекдоты по теме
— Что такое upsert? — INSERT, который превращается в UPDATE при конфликте. — Пример? — INSERT INTO counters (key, value) VALUES ('hits', 1) ON CONFLICT (key) DO UPDATE SET value = counters.value + 1; — Атомарный счётчик? — Именно.
— В чём разница между DROP и DELETE? DELETE удаляет строки, но таблица остаётся. DROP удаляет саму таблицу. Как дом: DELETE — вынести мебель, DROP — снести дом вместе с фундаментом.
— Почему UPDATE с подзапросом может обновить больше строк, чем ожидаешь? — Если подзапрос возвращает дубли: UPDATE orders SET status='done' WHERE id IN (SELECT order_id FROM events WHERE type='complete'); — Если events содержит два 'complete' для одного order_id — порядок? — UPDATE один раз, но проверь подзапрос. Всегда SELECT сначала.