跳到主要内容

SQL NOT NULL约束

提示

1.NOT NULL 约束的定义和作用:在 SQL 中,NOT NULL 约束确保表中的列不能存储 NULL 值,保证该字段总是包含有效数据。例如,在 CREATE TABLE 语句中,可以通过 college_id INT NOT NULL 指定 college_id 列必须有值。

2.NOT NULL 约束的语法:为列添加 NOT NULL 约束的语法是在列定义中添加 NOT NULL 关键字。例如,CREATE TABLE Colleges (college_id INT NOT NULL, college_code VARCHAR(20), college_name VARCHAR(50));

3.修改现有表的 NOT NULL 约束:可以使用 ALTER TABLE 语句修改现有表的列,以添加或移除 NOT NULL 约束。例如,使用 ALTER TABLE Colleges MODIFY college_id INT NOT NULL;college_id 列添加 NOT NULL 约束,或使用 ALTER TABLE Colleges MODIFY college_id INT; 移除该约束。

在 SQL 中,列中的 NOT NULL 约束表示该列不能存储 NULL 值。

示例

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 值的情况下向表中输入记录,我们将得到错误。

INSERT INTO Colleges (college_code, college_name)
VALUES ('NYC', "US");

推荐阅读