SQL NOT NULL 约束

在 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 是列的数据类型,例如 INTVARCHAR 等。

注意: NOT NULL 约束用于向表列添加约束,而 IS NULL 和 NOT NULLWHERE 子句一起用于从表中选择行。


移除 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");

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战