在本教程中,将学习如何使用SQL Server NOT NULL
约束来确保列中包含的数据不是NULL
。
SQL Server NOT NULL约束简介
SQL Server NOT NULL
约束只是指定列不能为NULL
值。
以下示例为列创建一个具有NOT NULL
约束的表:persons
,它具有以下几个字段: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
。
1. 将NOT NULL约束添加到列
要将NOT NULL
约束添加到现有列,可以分两步执行:
首先,更新表的值,以便列中没有NULL
值:
UPDATE table_name
SET column_name = <new_value>
WHERE column_name IS NULL;
其次,更改表以更改列的属性:
ALTER TABLE table_name
ALTER COLUMN column_name data_type NOT NULL;
例如,要将NOT NULL
约束添加到hr.persons
表的phone
列,请使用以下语句。
首先,如果某些人员没有电话号码,则将电话号码更新为公司电话号码,例如,0898-88889999
:
UPDATE hr.persons
SET phone = "0898-88889999"
WHER phone IS NULL;
第二步,修改phone
列的属性为NOT NULL
:
ALTER TABLE hr.persons
ALTER COLUMN phone VARCHAR(20) NOT NULL;
2. 删除NOT NULL约束
要从列中删除NOT NULL
约束,请使用ALTER TABLE ALTER COLUMN
语句,如下所示:
ALTER TABLE table_name
ALTER COLUMN column_name NULL;
例如,要从phone
列中删除NOT NULL
约束,请使用以下语句:
ALTER TABLE hr.pesons
ALTER COLUMN phone NULL;
在本教程中,我们学习了如何使用SQL Server NOT NULL
约束来强制列不接受NULL
。