ALTER TABLE — единственная команда для всех изменений структуры существующей таблицы: от добавления столбцов до управления ограничениями.
#️⃣ Полный синтаксис
💡 Важно
В отличие от CREATE TABLE, который создаёт таблицу с нуля, ALTER TABLE работает с уже существующей таблицей, которая может содержать данные. Это накладывает ограничения: например, нельзя добавить NOT NULL к столбцу, где уже есть NULL-значения.
#️⃣ Синтаксис
#️⃣ Пример
⚠ Осторожно
Если вы добавляете столбец с NOT NULL в таблицу, где уже есть строки, необходимо указать DEFAULT — иначе SQL вернёт ошибку, так как существующие строки получат NULL.
ALTER COLUMN позволяет изменить тип данных существующего столбца, его дефолтное значение или атрибуты.
#️⃣ Синтаксис
#️⃣ Пример
Расширять VARCHAR — увеличение VARCHAR(50) до VARCHAR(255) не затрагивает существующие данные.
#️⃣ Синтаксис
#️⃣ Пример — схема Заказы → Клиенты
#️⃣ Как это работает
💡 REFERENCES
Ключевое слово REFERENCES указывает на целевую таблицу и столбец. Целевой столбец должен быть первичным ключом или иметь ограничение UNIQUE.
#️⃣ Синтаксис
💡 Зачем давать имена?
Именованные ограничения легко удалять: DROP CONSTRAINT customer_age_chk — понятнее, чем искать автоматически сгенерированное имя. Особенно важно в командной работе и при миграциях.
#️⃣ Удаление ограничений — DROP
#️⃣ Проверка данных при добавлении ограничений
При добавлении ограничений SQL Server автоматически проверяет имеющиеся данные. Если они не соответствуют — ограничение не добавляется.
#️⃣ Когда использовать WITH NOCHECK?
При переносе данных из старой системы, где правила были другими — нужно добавить ограничения, не сломав импорт.