Модификация типа данных столбца

MS SQL Server
В MS SQL Server для изменения типа данных столбцов используется предложение ALTER COLUMN инструкции ALTER TABLE.

ALTER TABLE <table_name> ALTER COLUMN <col_name> <new_col_type> [ NULL | NOT NULL ]

В аргументе column_name содержит имя столбца, подлежащего изменению. Аргумент new_col_type содержит описание нового типа данных для изменяемого столбца.

Ниже приведены критерии для аргумента new_col_type изменяемого столбца:

  • Предыдущие типы данных должны быть неявно преобразуемыми в новый тип данных.
  • Аргумент new_col_type не может принадлежать к типу timestamp.
  • Если изменяемый столбец является столбцом идентификаторов, то новый тип данных должен поддерживать свойство идентификатора.

Тип данных столбцов text, ntext и image может быть изменен только следующими способами:

  • text на varchar(max), nvarchar(max) или xml
  • ntext на varchar(max), nvarchar(max) или xml
  • image в varbinary(max)

MySQL Server
В СУБД MySQL описание столбца меняется с помощью предложений CHANGE или MODIFY в операторе ALTER TABLE.

ALTER TABLE <table_name> MODIFY <col_definition>
ALTER TABLE <table_name> CHANGE <old_col_name> <col_definition>

В выражении col_definition для MODIFY и CHANGE используется тот же синтаксис, что и для CREATE TABLE. Следует учитывать, что этот синтаксис включает имя столбца, а не просто его тип.

Операция CHANGE, в отличие от операции MODIFY, не только меняет тип данных, но и переименовывает столбец. Поэтому при ее использовании сначала указывается имя столбца, который будет меняться, а затем дается полностью новое объявление столбца, включая опять же его имя.

IDevice IconПримеры
Переименовать столбец saledate в таблице tbl_sales в d_sale и изменить его тип с date на datetime. Установить атрибут NOT NULL для данного столбца
MS SQL:
/*переиенование столбца тоблицы*/
sp_rename 'tbl_sales.saledate', 'd_sale', 'COLUMN';
/*измениение описание столбца*/

ALTER TABLE tbl_sales
ALTER COLUMN d_sale datetime NOT NULL;
MySQL:
ALTER TABLE tbl_sales CHANGE saledate d_sale datetime NOT NULL

Увеличить размерность столбцов name и lastname в таблице tbl_clients с 45 символов до 60

MS SQL:
ALTER TABLE tbl_sales
ALTER COLUMN name varchar(60), ALTER COLUMN lastname varchar(60);
MySQL:
ALTER TABLE tbl_clients MODIFY name varchar(60), MODIFY lastname varchar(60)