ALTER TABLE в SQL используется, когда нужно изменить структуру уже существующей таблицы: добавить столбец, поменять тип данных, добавить ограничение, удалить поле или переименовать объект. Это команда не для просмотра данных, а для изменения схемы базы, поэтому на рабочей таблице ее нужно выполнять аккуратно
Самый простой пример — добавить новый столбец:
ALTER TABLE users
ADD email VARCHAR(255);
После выполнения в таблице users появится столбец email. Старые строки не исчезнут, но в новом поле у них обычно будет NULL, если не задано значение по умолчанию
Как добавить столбец в таблицу
Для добавления столбца используется ADD
ALTER TABLE products
ADD article VARCHAR(50);
Если столбец должен быть обязательным, не спешите сразу добавлять NOT NULL на таблицу с данными. База может отказаться выполнять команду, потому что старым строкам нечего поставить в новый обязательный столбец
Более спокойный путь такой: добавить столбец, заполнить значения, затем добавить ограничение
ALTER TABLE products
ADD article VARCHAR(50);
UPDATE products
SET article = 'unknown'
WHERE article IS NULL;
После этого уже можно думать об ограничении NOT NULL, если оно действительно нужно
Как изменить тип данных столбца
Синтаксис зависит от СУБД. В SQL Server часто используют ALTER COLUMN
ALTER TABLE products
ALTER COLUMN article VARCHAR(100);
В PostgreSQL используется другой вариант:
ALTER TABLE products
ALTER COLUMN article TYPE VARCHAR(100);
В MySQL часто встречается MODIFY
ALTER TABLE products
MODIFY article VARCHAR(100);
Поэтому запрос «alter table» обязательно нужно привязывать к конкретной базе. Один пример может не запуститься в другой системе без изменения синтаксиса
Как удалить столбец
Удаление столбца выглядит просто:
ALTER TABLE products
DROP COLUMN article;
Но действие опасное: данные в этом столбце исчезнут. Перед удалением проверьте, используется ли поле в отчетах, приложении, индексах, представлениях и внешних интеграциях
Как проверить результат
После изменения таблицы проверьте структуру. В SQL Server можно использовать системное представление INFORMATION_SCHEMA.COLUMNS
SELECT column_name, data_type, character_maximum_length
FROM information_schema.columns
WHERE table_name = 'products';
В SQLite удобно использовать:
PRAGMA table_info(products);
Мини-практика
Создайте учебную таблицу и добавьте к ней новый столбец
CREATE TABLE products (
id INTEGER,
name TEXT
);
ALTER TABLE products
ADD price INTEGER;
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'products';
Если вы тренируетесь в SQLite, вместо information_schema используйте PRAGMA table_info(products);
Частые ошибки
Первая ошибка — запускать пример для SQL Server в MySQL или PostgreSQL без адаптации. Команда называется одинаково, но детали синтаксиса отличаются
Вторая ошибка — менять тип данных без проверки существующих значений. Если в столбце есть текст, база не сможет спокойно превратить его в число
Третья ошибка — удалять столбец без резервной копии. Даже если команда короткая, вернуть данные потом может быть трудно
Что почитать дальше по SQL
Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:
- Как удалить столбец из таблицы SQL: ALTER TABLE DROP COLUMN
- DROP TABLE SQL: как удалить таблицу
- CREATE TABLE SQL: как создать таблицу запросом
- DELETE SQL: как удалить строки из таблицы и не потерять лишние данные



