В этом руководстве вы узнаете, как использовать оператор SQL Server ALTER TABLE ALTER COLUMN для изменения столбца таблицы.
SQL Server позволяет вносить следующие изменения в существующий столбец таблицы:
- Изменить тип данных
- Изменить размер
- Добавить ограничение NOT NULL
Изменить тип данных столбца
Чтобы изменить тип данных столбца, используйте следующий оператор:
ALTER TABLE table_name ALTER COLUMN column_name new_data_type(size);
Новый тип данных должен быть совместим со старым, в противном случае вы получите ошибку преобразования, если столбец содержит данные и их не удастся преобразовать.
См. следующий пример.
Сначала создайте новую таблицу с одним столбцом, тип данных которого — INT:
CREATE TABLE t1(c INT);
Во-вторых, вставьте несколько строк в таблицу:
INSERT INTO t1 VALUES (1), (2), (3);
Во-вторых, измените тип данных столбца с INT на VARCHAR:
ALTER TABLE t1 ALTER COLUMN c VARCHAR(2);
В-третьих, вставьте новую строку с данными строки символов:
INSERT INTO t1 VALUES('@');
В-четвертых, измените тип данных столбца с VARCHAR обратно на INT:
ALTER TABLE t1 ALTER COLUMN c INT;
SQL Server выдал следующую ошибку:
Conversion failed when converting the varchar value '@' to data type int.
Изменить размер столбца
Следующий оператор создает новую таблицу с одним столбцом, тип данных которого VARCHAR(10):
CREATE TABLE t2(c VARCHAR(10));
Давайте вставим некоторые примеры данных в таблицу t2:
INSERT INTO t2 VALUES ('SQL Server'), ('Modify'), ('Column')
Увеличить размер столбца можно следующим образом:
ALTER TABLE t2 ALTER COLUMN c VARCHAR(50);
Однако при уменьшении размера столбца SQL Server проверяет существующие данные, чтобы узнать, может ли он преобразовать данные на основе нового размера. Если преобразование не удается, SQL Server завершает оператор и выдает сообщение об ошибке.
Например, если уменьшить размер столбца c до 5 символов:
ALTER TABLE t2 ALTER COLUMN c VARCHAR(5);
SQL Server выдал следующую ошибку:
String or binary data would be truncated.
Добавить ограничение NOT NULL к столбцу, допускающему значение NULL
Следующий оператор создает новую таблицу со столбцом, допускающим значение NULL:
CREATE TABLE t3(c VARCHAR(50));
Следующий оператор вставляет несколько строк в таблицу:
INSERT INTO t3 VALUES ('Nullable column'), (NULL);
Если вы хотите добавить ограничение NOT NULL к столбцу c, вам необходимо сначала обновить NULL до ненулевого значения, например:
UPDATE t3 SET c = '' WHERE c IS NULL;
А затем добавьте ограничение NOT NULL:
ALTER TABLE t3 ALTER COLUMN c VARCHAR(20) NOT NULL;
В этом руководстве вы узнали, как использовать инструкцию SQL Server ALTER TABLE ALTER COLUMN для изменения некоторых свойств существующего столбца.