Ограничение NOT NULL сервера SQL

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

Введение в ограничение NOT NULL SQL Server

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

В следующем примере создается таблица с ограничениями NOT NULL для столбцов: first_name, last_name и email:

CREATE SCHEMA hr;
GO
CREATE TABLE hr.persons(
    person_id INT IDENTITY PRIMARY KEY,
    first_name VARCHAR(255) NOT NULL,
    last_name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    phone VARCHAR(20)
);

Обратите внимание, что ограничения NOT NULL всегда записываются как ограничения столбцов.

По умолчанию, если вы не укажете ограничение NOT NULL, SQL Server разрешит столбцу принимать NULL. В этом примере столбец phone может принимать NULL.

Добавить ограничение NOT NULL к существующему столбцу

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

Сначала обновим таблицу так, чтобы в столбце не было значений NULL:

UPDATE table_name
SET column_name = 
WHERE column_name IS NULL;

Во-вторых, измените таблицу, чтобы изменить свойство столбца:

ALTER TABLE table_name
ALTER COLUMN column_name data_type NOT NULL;

Например, чтобы добавить ограничение NOT NULL к столбцу телефонов таблицы hr.persons, используйте следующие операторы:

Во-первых, если у человека нет номера телефона, обновите его на номер телефона компании, например,(408) 123 4567:

UPDATE hr.persons
SET phone = "(408) 123 4567"
WHER phone IS NULL;

Во-вторых, измените свойство столбца телефона:

ALTER TABLE hr.persons
ALTER COLUMN phone VARCHAR(20) NOT NULL;

Удаление ограничения NOT NULL

Чтобы удалить ограничение NOT NULL из столбца, используйте оператор ALTER TABLE ALTER COLUMN следующим образом:

ALTER TABLE table_name
ALTER COLUMN column_name data_type NULL;

Например, чтобы удалить ограничение NOT NULL из столбца телефонов, используйте следующий оператор:

ALTER TABLE hr.pesons
ALTER COLUMN phone VARCHAR(20) NULL;

В этом руководстве вы узнали, как использовать ограничение SQL Server NOT NULL, чтобы столбец не принимал значение NULL.

Мирослав С.

Автор статей, ИБ-специалист