在 SQL 中,列上的 NOT NULL
约束意味着该列不能存储 NULL
值。
示例
-- create table with NOT NULL constraint
CREATE TABLE Colleges (
college_id INT NOT NULL,
college_code VARCHAR(20),
college_name VARCHAR(50)
);
在这里,Colleges 表的 college_id 列不允许 NULL
值。
NOT NULL 约束语法
SQL NOT NULL
约束的语法是
CREATE TABLE table_name (
column_name data_type NOT NULL
);
这里,
table_name
是要创建的表的名称column_name
是要实现约束的列的名称data_type
是列的数据类型,例如INT
、VARCHAR
等。
注意: NOT NULL
约束用于向表列添加约束,而 IS NULL 和 NOT NULL 与 WHERE 子句一起用于从表中选择行。
移除 NOT NULL 约束
如果不再需要 NOT NULL
约束,我们也可以移除它。例如,
SQL Server
ALTER TABLE Colleges
ALTER COLUMN college_id INT;
Oracle
ALTER TABLE Colleges
MODIFY (college_id NULL);
MySQL
ALTER TABLE Colleges
MODIFY college_id INT;
PostgreSQL
ALTER TABLE Colleges
ALTER COLUMN college_id DROP NOT NULL;
在这里,我们使用了不同数据库系统中的 ALTER TABLE
命令来移除 college_id
列上的 NOT NULL
约束。
带有 ALTER TABLE 的 NOT NULL 约束
我们还可以使用 ALTER TABLE 命令向现有表中的列添加 NOT NULL
约束。例如,
SQL Server
ALTER TABLE Colleges
ALTER COLUMN college_id INT NOT NULL;
Oracle
ALTER TABLE Colleges
MODIFY college_id INT NOT NULL;
MySQL
ALTER TABLE Colleges
MODIFY COLUMN college_id INT NOT NULL;
PostgreSQL
ALTER TABLE Colleges
ALTER COLUMN college_id SET NOT NULL;
在这里,SQL 命令向现有 Colleges
表中的 college_id 列添加了 NOT NULL
约束。
NOT NULL 约束引起的错误
我们必须为带有 NOT NULL
约束的列输入值。否则,SQL 将会报错。
例如,我们 Colleges
表的 college_id
列带有 NOT NULL
约束。因此,如果我们向表中插入记录而未提供 college_id
的值,将会收到错误。
-- gives error due to NOT NULL constraint
INSERT INTO Colleges (college_code, college_name)
VALUES ('NYC', "US");
另请阅读