Как изменить null на not null ms sql

I have a table that has several nullable integer columns. This is undesirable for several reasons, so I am looking to update all nulls to 0 and then set these columns to NOT NULL. Aside from chang...

I have a table that has several nullable integer columns. This is undesirable for several reasons, so I am looking to update all nulls to 0 and then set these columns to NOT NULL. Aside from changing nulls to 0, data must be preserved.

I am looking for the specific SQL syntax to alter a column (call it ColumnA) to «not null«. Assume the data has been updated to not contain nulls.

Using SQL server 2000.

Marko's user avatar

Marko

20.3k13 gold badges48 silver badges64 bronze badges

asked Mar 27, 2009 at 13:24

Karmic Coder's user avatar

Karmic CoderKarmic Coder

17.4k6 gold badges33 silver badges42 bronze badges

2

First, make all current NULL values disappear:

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

Then, update the table definition to disallow «NULLs»:

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

Arsen Khachaturyan's user avatar

answered Mar 27, 2009 at 13:30

mdb's user avatar

8

I had the same problem, but the field used to default to null, and now I want to default it to 0. That required adding one more line after mdb’s solution:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

answered Jun 15, 2012 at 20:45

Greg Dougherty's user avatar

Greg DoughertyGreg Dougherty

3,2418 gold badges34 silver badges57 bronze badges

4

You will have to do it in two steps:

  1. Update the table so that there are no nulls in the column.
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. Alter the table to change the property of the column
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

answered Mar 27, 2009 at 13:34

Ralph Wiggum's user avatar

Ralph WiggumRalph Wiggum

6991 gold badge6 silver badges10 bronze badges

1

For Oracle 11g, I was able to change the column attribute as follows:

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

Otherwise abatichev’s answer seemed good. You can’t repeat the alter — it complains (at least in SQL Developer) that the column is already not null.

j0k's user avatar

j0k

22.4k28 gold badges80 silver badges89 bronze badges

answered Sep 17, 2012 at 21:13

JDM's user avatar

JDMJDM

3493 silver badges2 bronze badges

1

this worked for me:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

answered Jun 5, 2012 at 13:00

Dheeraj Sam's user avatar

Dheeraj SamDheeraj Sam

3692 silver badges5 bronze badges

0

As long as the column is not a unique identifier

UPDATE table set columnName = 0 where columnName is null

Then

Alter the table and set the field to non null and specify a default value of 0

answered Mar 27, 2009 at 13:26

Eppz's user avatar

EppzEppz

3,1382 gold badges19 silver badges26 bronze badges

In case of FOREIGN KEY CONSTRAINT… there will be a problem if ‘0’ is not present in the column of Primary key table. The solution for that is…

STEP1:

Disable all the constraints using this code :

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

STEP2:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

STEP3:

Enable all the constraints using this code :

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Imran Ali Khan's user avatar

answered Nov 27, 2014 at 17:13

sam05's user avatar

sam05sam05

1992 silver badges4 bronze badges

this seems simpler, but only works on Oracle:

ALTER TABLE [Table] 
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;

in addition, with this, you can also add columns, not just alter it.
It updates to the default value (0) in this example, if the value was null.

ՕլՁՅԿ's user avatar

ՕլՁՅԿ

18.4k11 gold badges70 silver badges100 bronze badges

answered Mar 4, 2012 at 7:55

csomakk's user avatar

csomakkcsomakk

5,2491 gold badge29 silver badges33 bronze badges

0

In my case I had difficulties with the posted answers. I ended up using the following:

ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';

Change VARCHAR(200) to your datatype, and optionally change the default value.

If you don’t have a default value you’re going to have a problem making this change, as default would be null creating a conflict.

answered Jan 26, 2017 at 19:39

Philip Kirkbride's user avatar

Philip KirkbridePhilip Kirkbride

20.8k34 gold badges120 silver badges218 bronze badges

Making column not null and adding default can also be done in the SSMS GUI.

  1. As others have already stated, you can’t set «not null» until all
    the existing data is «not null» like so:

UPDATE myTable SET myColumn = 0

  1. Once that’s done, with the table in design view (right click on
    table and click «design view»), you can just uncheck the Allow
    Nulls
    columns like so:

enter image description here

  1. Still in design view with the column selected, you can see the
    Column Properties in the window below and set the default to 0 in there as well like so:

enter image description here

answered Dec 15, 2015 at 3:14

Tony L.'s user avatar

Tony L.Tony L.

16.8k8 gold badges68 silver badges65 bronze badges

0

Let’s take an example:

TABLE NAME=EMPLOYEE

And I want to change the column EMPLOYEE_NAME to NOT NULL. This query can be used for the task:

ALTER TABLE EMPLOYEE MODIFY EMPLOYEE.EMPLOYEE_NAME datatype NOT NULL;

Zoe stands with Ukraine's user avatar

answered Apr 26, 2019 at 11:58

Ashish Dwivedi's user avatar

1

For the inbuilt javaDB included in the JDK (Oracle’s supported distribution of the Apache Derby) the below worked for me

alter table [table name] alter column [column name] not null;

answered Jun 13, 2014 at 0:45

trooper31's user avatar

trooper31trooper31

1821 gold badge2 silver badges9 bronze badges

You can change the definition of existing DB column using following sql.

ALTER TABLE mytable modify mycolumn datatype NOT NULL;

answered Nov 12, 2018 at 9:03

Rashmi singh's user avatar

  1. First make sure the column that your changing to not does not have null values
    select count(*) from table where column’s_name is null

  2. Impute the missing values. you can replace the nulls with empty string or 0 or an average or median value or an interpolated value. It depends on your back fill strategy or forward fill strategy.

  3. Decide if the column values need to be unique or non-unique. if they need to be unique than add an unique constraint. Otherwise, see if performance is adequate or if you need to add an index.

answered Apr 30, 2021 at 20:51

Golden Lion's user avatar

Golden LionGolden Lion

3,4832 gold badges25 silver badges32 bronze badges

I have a table that has several nullable integer columns. This is undesirable for several reasons, so I am looking to update all nulls to 0 and then set these columns to NOT NULL. Aside from changing nulls to 0, data must be preserved.

I am looking for the specific SQL syntax to alter a column (call it ColumnA) to «not null«. Assume the data has been updated to not contain nulls.

Using SQL server 2000.

Marko's user avatar

Marko

20.3k13 gold badges48 silver badges64 bronze badges

asked Mar 27, 2009 at 13:24

Karmic Coder's user avatar

Karmic CoderKarmic Coder

17.4k6 gold badges33 silver badges42 bronze badges

2

First, make all current NULL values disappear:

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

Then, update the table definition to disallow «NULLs»:

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

Arsen Khachaturyan's user avatar

answered Mar 27, 2009 at 13:30

mdb's user avatar

8

I had the same problem, but the field used to default to null, and now I want to default it to 0. That required adding one more line after mdb’s solution:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

answered Jun 15, 2012 at 20:45

Greg Dougherty's user avatar

Greg DoughertyGreg Dougherty

3,2418 gold badges34 silver badges57 bronze badges

4

You will have to do it in two steps:

  1. Update the table so that there are no nulls in the column.
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. Alter the table to change the property of the column
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

answered Mar 27, 2009 at 13:34

Ralph Wiggum's user avatar

Ralph WiggumRalph Wiggum

6991 gold badge6 silver badges10 bronze badges

1

For Oracle 11g, I was able to change the column attribute as follows:

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

Otherwise abatichev’s answer seemed good. You can’t repeat the alter — it complains (at least in SQL Developer) that the column is already not null.

j0k's user avatar

j0k

22.4k28 gold badges80 silver badges89 bronze badges

answered Sep 17, 2012 at 21:13

JDM's user avatar

JDMJDM

3493 silver badges2 bronze badges

1

this worked for me:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

answered Jun 5, 2012 at 13:00

Dheeraj Sam's user avatar

Dheeraj SamDheeraj Sam

3692 silver badges5 bronze badges

0

As long as the column is not a unique identifier

UPDATE table set columnName = 0 where columnName is null

Then

Alter the table and set the field to non null and specify a default value of 0

answered Mar 27, 2009 at 13:26

Eppz's user avatar

EppzEppz

3,1382 gold badges19 silver badges26 bronze badges

In case of FOREIGN KEY CONSTRAINT… there will be a problem if ‘0’ is not present in the column of Primary key table. The solution for that is…

STEP1:

Disable all the constraints using this code :

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

STEP2:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

STEP3:

Enable all the constraints using this code :

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Imran Ali Khan's user avatar

answered Nov 27, 2014 at 17:13

sam05's user avatar

sam05sam05

1992 silver badges4 bronze badges

this seems simpler, but only works on Oracle:

ALTER TABLE [Table] 
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;

in addition, with this, you can also add columns, not just alter it.
It updates to the default value (0) in this example, if the value was null.

ՕլՁՅԿ's user avatar

ՕլՁՅԿ

18.4k11 gold badges70 silver badges100 bronze badges

answered Mar 4, 2012 at 7:55

csomakk's user avatar

csomakkcsomakk

5,2491 gold badge29 silver badges33 bronze badges

0

In my case I had difficulties with the posted answers. I ended up using the following:

ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';

Change VARCHAR(200) to your datatype, and optionally change the default value.

If you don’t have a default value you’re going to have a problem making this change, as default would be null creating a conflict.

answered Jan 26, 2017 at 19:39

Philip Kirkbride's user avatar

Philip KirkbridePhilip Kirkbride

20.8k34 gold badges120 silver badges218 bronze badges

Making column not null and adding default can also be done in the SSMS GUI.

  1. As others have already stated, you can’t set «not null» until all
    the existing data is «not null» like so:

UPDATE myTable SET myColumn = 0

  1. Once that’s done, with the table in design view (right click on
    table and click «design view»), you can just uncheck the Allow
    Nulls
    columns like so:

enter image description here

  1. Still in design view with the column selected, you can see the
    Column Properties in the window below and set the default to 0 in there as well like so:

enter image description here

answered Dec 15, 2015 at 3:14

Tony L.'s user avatar

Tony L.Tony L.

16.8k8 gold badges68 silver badges65 bronze badges

0

Let’s take an example:

TABLE NAME=EMPLOYEE

And I want to change the column EMPLOYEE_NAME to NOT NULL. This query can be used for the task:

ALTER TABLE EMPLOYEE MODIFY EMPLOYEE.EMPLOYEE_NAME datatype NOT NULL;

Zoe stands with Ukraine's user avatar

answered Apr 26, 2019 at 11:58

Ashish Dwivedi's user avatar

1

For the inbuilt javaDB included in the JDK (Oracle’s supported distribution of the Apache Derby) the below worked for me

alter table [table name] alter column [column name] not null;

answered Jun 13, 2014 at 0:45

trooper31's user avatar

trooper31trooper31

1821 gold badge2 silver badges9 bronze badges

You can change the definition of existing DB column using following sql.

ALTER TABLE mytable modify mycolumn datatype NOT NULL;

answered Nov 12, 2018 at 9:03

Rashmi singh's user avatar

  1. First make sure the column that your changing to not does not have null values
    select count(*) from table where column’s_name is null

  2. Impute the missing values. you can replace the nulls with empty string or 0 or an average or median value or an interpolated value. It depends on your back fill strategy or forward fill strategy.

  3. Decide if the column values need to be unique or non-unique. if they need to be unique than add an unique constraint. Otherwise, see if performance is adequate or if you need to add an index.

answered Apr 30, 2021 at 20:51

Golden Lion's user avatar

Golden LionGolden Lion

3,4832 gold badges25 silver badges32 bronze badges

у меня есть таблица с несколькими целочисленными столбцами nullable. Это нежелательно по нескольким причинам, поэтому я хочу обновить все нули до 0, а затем установить эти столбцы в NOT NULL. Помимо изменения нулей на 0, данные должны быть сохранены.

Я ищу специфический синтаксис SQL чтобы изменить столбец (назовите его ColumnA) в «not null«. Предположим, что данные были обновлены, чтобы не содержать нулей.

используя SQL server 2000.

11 ответов


во-первых, сделайте все текущие значения NULL исчезают:

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

затем обновите определение таблицы, чтобы запретить нули:

ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL

У меня была та же проблема, но поле использовалось по умолчанию для null, и теперь я хочу по умолчанию 0. Это потребовало добавления еще одной строки после решения mdb:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

вам придется сделать это в два шага:

  1. обновите таблицу, чтобы в столбце не было нулей.
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. изменить таблицу, чтобы изменить свойства столбца
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

для Oracle 11g я смог изменить атрибут столбца следующим образом:

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

пока столбец не является уникальным идентификатором

UPDATE table set columnName = 0 where columnName is null

затем

измените таблицу и установите для поля значение non null и укажите значение по умолчанию 0


это сработало для меня:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

это кажется проще, но работает только на Oracle:

ALTER TABLE [Table] 
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;

кроме того, с помощью этого вы также можете добавлять столбцы, а не просто изменять их.
Он обновляет значение по умолчанию (0) в этом примере, если значение было null.


в моем случае у меня были трудности с ответами. В итоге я использовал следующее:

ALTER TABLE table_name CHANGE COLUMN column_name column_name VARCHAR(200) NOT NULL DEFAULT '';

изменить VARCHAR(200) в свой тип данных, и при необходимости измените значение по умолчанию.

Если у вас нет значения по умолчанию, у вас будет проблема с этим изменением, так как по умолчанию будет null, создающий конфликт.

3

автор: Philip Kirkbride


в случае FOREIGN KEY CONSTRAINT… будет проблема, если «0» отсутствует в столбце таблицы первичного ключа. Решение для этого есть…

Шаг 1:

отключить все ограничения, используя этот код :

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

Шаг 2:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

Шаг 3:

включить все ограничения с помощью этого кода:

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

создание столбца не null и добавление по умолчанию также можно сделать в GUI SSMS.

  1. как уже заявили другие, вы не можете установить «not null», пока все
    существующие данные «не null», например:

UPDATE myTable SET myColumn = 0

  1. как только это будет сделано, с таблицей в представлении дизайна (щелкните правой кнопкой мыши
    таблица и нажмите «design view»), вы можете просто снять флажок разрешить
    Nulls
    столбцы как Итак:

enter image description here

  1. все еще в проектном виде с выбранным столбцом вы можете увидеть
    Свойства Столбца в окне ниже и установите значение по умолчанию 0 там, а также так:

enter image description here


для встроенного javaDB, включенного в JDK (поддерживаемый Oracle дистрибутив Apache Derby), ниже работало для меня

alter table [table name] alter column [column name] not null;

В этом материале я покажу, как вносятся изменения в таблицы в Microsoft SQL Server, под изменениями здесь подразумевается добавление новых столбцов, удаление или изменение характеристик уже существующих столбцов в таблице. По традиции я покажу, как это делается в графическом конструкторе среды SQL Server Management Studio и, конечно же, как это делается на языке T-SQL.

Скриншот 1

Напомню, в прошлых статьях я показывал, как создаются базы данных в Microsoft SQL Server, а также как создаются новые таблицы. Сегодня Вы узнаете, как изменить уже существующие таблицы в Microsoft SQL Server, при этом, как было уже отмечено, будет рассмотрено два способа изменения таблиц: первый – с помощью SQL Server Management Studio (SSMS), и второй – с помощью T-SQL.

Также я расскажу о некоторых нюансах и проблемах, которые могут возникнуть в процессе изменения таблиц, что, на самом деле, характерно для большинства случаев.

Заметка! Для комплексного изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL, в которых используется последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL.

Содержание

  1. Исходные данные для примеров
  2. Изменение таблиц в конструкторе SQL Server Management Studio
  3. Изменение таблиц в Microsoft SQL Server на языке T-SQL (ALTER TABLE)
  4. Упрощенный синтаксис инструкции ALTER TABLE
  5. Добавление нового столбца в таблицу на T-SQL
  6. Удаление столбца из таблицы на T-SQL
  7. Задаем свойство NOT NULL для столбца на T-SQL
  8. Изменяем тип данных столбца на T-SQL
  9. Видео-инструкция по изменению таблиц в Microsoft SQL Server

Исходные данные для примеров

Сначала давайте определим исходные данные, а точнее таблицу, которую мы будем изменять. Допустим, это будет точно такая же таблица, которую мы использовали в прошлых статьях, а именно наша тестовая таблица Goods – она содержит информацию о товарах и имеет следующие столбцы:

  • ProductId – идентификатор товара, столбец не может содержать значения NULL, первичный ключ;
  • Category – ссылка на категорию товара, столбец не может содержать значения NULL, но имеет значение по умолчанию, например, для случаев, когда товар еще не распределили в необходимую категорию, в этом случае товару будет присвоена категория по умолчанию;
  • ProductName – наименование товара, столбец не может содержать значения NULL;
  • Price – цена товара, столбец может содержать значения NULL, например, с ценой еще не определились.

Если у Вас нет такой таблицы, то создайте ее и добавьте в нее несколько строк данных, например, следующей инструкцией.

   
   --Создание таблицы с товарами
   CREATE TABLE Goods (
     ProductId    INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_ProductId PRIMARY KEY,
     Category     INT NOT NULL DEFAULT (1),
     ProductName  VARCHAR(100) NOT NULL,
     Price        MONEY NULL,
   );
   GO
   --Добавление строк в таблицу
   INSERT INTO Goods(Category, ProductName, Price)
     VALUES (1, 'Системный блок', 300),
            (1, 'Монитор', 200),
            (2, 'Клавиатура', 100);
   GO
   --Выборка данных
   SELECT * FROM Goods;

Скриншот 2

Данные мы добавили инструкцией INSERT INTO языка T-SQL.

Примечание! В качестве сервера у меня выступает версия Microsoft SQL Server 2017 Express, как ее установить, можете посмотреть в моей видео-инструкции.

Итак, давайте начнем.

Изменение таблиц в конструкторе SQL Server Management Studio

Сначала я покажу, как изменяются таблицы с помощью графического интерфейса SQL Server Management Studio, а изменяются они точно так же, как и создаются, с помощью того же самого конструктора.

Чтобы открыть конструктор таблиц в среде SQL Server Management Studio, необходимо в обозревателе объектов найти нужную таблицу и щелкнуть по ней правой кнопкой мыши, и выбрать пункт «Проект». Увидеть список таблиц можно в контейнере «Базы данных -> Нужная база данных -> Таблицы».

Скриншот 3

В итоге откроется конструктор таблиц, где Вы можете добавлять, удалять или изменять столбцы таблицы.

Скриншот 4

Важно! При работе в конструкторе с таблицей, в которой есть данные, обязательно стоит учитывать один очень важный момент, большинство изменений внести не получится, например, изменить свойства столбцов. Это связано с тем, что по умолчанию в конструкторе «Запрещено сохранение изменений, требующих повторного создания таблицы», именно так и называется параметр, который по умолчанию включён, за счет чего все соответствующие изменения будут блокироваться и, при попытке сохранить такие изменения, Вы будете получать, например, ошибки следующего характера

Скриншот 5

В случае если Вы работаете исключительно в конструкторе (если делать все то же самое с помощью T-SQL, то такая ошибка возникать не будет) и четко уверены в своих действиях, то этот параметр можно отключить. Для этого зайдите в меню «Сервис -> Параметры» и в разделе «Конструкторы -> Конструкторы таблиц и баз данных» снимите соответствующую галочку.

Скриншот 6

Курс по SQL для начинающих

После чего данное ограничение будет снято, и Вы сможете вносить изменения в таблицы с помощью конструктора. При сохранении таблицы ошибок возникать уже не будет.

Как работать с конструктором, я думаю, понятно, например, для добавления нового столбца просто пишем название столбца в новую строку, выбираем тип данных и указываем признак, может ли данный столбец хранить значения NULL. Для сохранения изменений нажимаем сочетание клавиш «Ctrl+S» или на панели инструментов нажимаем кнопку «Сохранить» (также кнопка «сохранить» доступна и в меню «Файл», и в контекстном меню самой вкладки конструктора).

Скриншот 7

Для внесения изменений в существующие столбцы точно так же изменяем параметры, и сохраняем изменения.

Важно!

Во всех случаях, т.е. не важно с помощью конструктора или с помощью языка T-SQL, когда Вы будете вносить изменения в таблицы, в которых уже есть данные, важно понимать и знать, как эти изменения отразятся на существующих данных, и можно ли вообще применить эти изменения к данным.

Например, изменить тип данных можно, только если он явно преобразовывается без потери данных или в столбце нет данных вообще. Допустим, если в столбце с типом данных VARCHAR(100) есть данные, при этом максимальная длина фактических данных в столбце, к примеру, 80 символов, то изменить тип данных, без потери данных можно только в сторону увеличения или уменьшения до 80 символов (VARCHAR(80)).

Также если в столбце есть данные, при этом он может принимать значение NULL, а Вы хотите сделать его обязательным, т.е. задать свойство NOT NULL, Вам сначала нужно проставить всем записям, в которых есть NULL, значение, например, то, которое будет использоваться по умолчанию, или уже более детально провести анализ для корректной простановки значений.

Еще стоит отметить, что даже просто добавить новый столбец, который не должен принимать значения NULL, не получится, если в таблице уже есть записи, в таких случаях нужно сначала добавить столбец с возможностью принятия значения NULL, потом заполнить его данными, и уже потом обновить данный параметр, т.е. указать NOT NULL.

Изменение таблиц в Microsoft SQL Server на языке T-SQL (ALTER TABLE)

Теперь давайте я покажу, как изменять таблицы в Microsoft SQL Server на T-SQL. Все изменения в таблицы вносятся с помощью инструкции ALTER TABLE. Для начала давайте рассмотрим упрощённый синтаксис инструкции ALTER TABLE, чтобы Вы лучше понимали структуру тех запросов, которые мы будем рассматривать далее в примерах.

Упрощенный синтаксис инструкции ALTER TABLE

   
   ALTER TABLE [Название таблицы] [Тип изменения] [Название столбца] [Тип данных] 
               [Возможность принятия значения NULL]

Добавление нового столбца в таблицу на T-SQL

Чтобы добавить новый столбец в таблицу, мы пишем инструкцию ALTER TABLE с параметром ADD, указываем название нового столбца (в нашем случае ProductDescription, т.е. описание товара), его тип данных и возможность принятия значения NULL (как было уже отмечено ранее, если в таблице есть строки, то сначала столбец должен принимать значения NULL).

   
   ALTER TABLE Goods ADD ProductDescription VARCHAR(300) NULL;

   GO

   SELECT * FROM Goods;

Скриншот 8

Удаление столбца из таблицы на T-SQL

Если Вам столбец не нужен, то его легко удалить (если он не участвует ни в каких связях) параметром DROP COLUMN, например, мы передумали добавлять новый столбец с описанием товара, и чтобы его удалить, пишем следующую инструкцию.

   
   ALTER TABLE Goods DROP COLUMN ProductDescription;

   GO

   SELECT * FROM Goods;

Скриншот 9

Задаем свойство NOT NULL для столбца на T-SQL

Если у Вас возникла необходимость сделать столбец обязательным, т.е. задать свойство NOT NULL для столбца, то для этого необходимо использовать параметр ALTER COLUMN, но обязательно помним о том, что в столбце уже должны быть заполнены все строки, т.е. отсутствовать значения NULL.

Допустим, в нашем случае цена стала обязательной, чтобы это реализовать в нашей таблице, пишем следующую инструкцию (просто указываем все фактические параметры столбца и изменяем тот, который нужно, в данном конкретном случае возможность принятия значения NULL).

   
   ALTER TABLE Goods ALTER COLUMN Price MONEY NOT NULL;

Изменяем тип данных столбца на T-SQL

Для изменения типа данных столбца точно так же перечисляем все параметры столбца с изменением нужного, т.е. указываем новый тип данных.

Допустим, у нас возникла необходимость увеличить длину строки для хранения наименования товара (например, до 200 символов).

   
   ALTER TABLE Goods ALTER COLUMN ProductName VARCHAR(200) NOT NULL;

У меня на этом все, надеюсь, материал был Вам полезен, пока!

Понравилась статья? Поделить с друзьями:
  • Как изменить mph на км ч beamng drive
  • Как изменить mac адрес виртуальной сетевой карты
  • Как изменить jpg на pat
  • Как изменить iso на nikon d3500
  • Как изменить ip адрес вай фай на телефоне