目录

  1. NOT NULL 约束简介
  2. NOT NULL 约束的语法
  3. NOT NULL 约束的使用场景
  4. NOT NULL 约束的注意事项
  5. 参考资料

NOT NULL 约束简介

NOT NULL 约束是 SQL 中的一种数据完整性约束,用于确保列中的数据不能为空。换句话说,当在创建或修改表时为某一列定义 NOT NULL 约束时,这意味着该列必须有一个值,并且在插入或更新数据时不能插入 NULL 值。

NOT NULL 约束常常用于那些每个记录都需要有数据的列,例如 ID 列、姓名、邮箱等。


NOT NULL 约束的语法

1. 创建表时定义 NOT NULL 约束

在创建表时,可以为某一列添加 NOT NULL 约束,确保该列中的每个值都不能为空:

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50),
    hire_date DATE NOT NULL
);

在这个例子中,first_namehire_date 列被定义为 NOT NULL,这意味着在插入记录时,必须为这两列提供值,不能为 NULL

2. 修改现有表,添加 NOT NULL 约束

如果表已经存在,并且希望对某一列添加 NOT NULL 约束,可以使用 ALTER TABLE 语句:

ALTER TABLE employees
MODIFY first_name VARCHAR(50) NOT NULL;

此语句修改 employees 表中的 first_name 列,确保该列不能为 NULL

3. 删除 NOT NULL 约束

如果要删除列上的 NOT NULL 约束,可以使用 ALTER TABLE 语句:

ALTER TABLE employees
MODIFY first_name VARCHAR(50) NULL;

这条语句将 first_name 列的约束改为允许为 NULL


NOT NULL 约束的使用场景

  1. 确保关键字段不为空
    • 在一些业务场景中,某些字段必须始终有数据。例如,员工的 employee_idemailhire_date 等信息应该始终存在,不能为 NULL
  2. 用户输入验证
    • NOT NULL 约束有助于确保用户在输入数据时不留空值。这对于确保数据的完整性非常重要,尤其是当数据关系复杂时。
  3. 数据完整性
    • 在与其他表建立关联时,某些字段不允许为空,确保在联接查询时不会出现空值引起的问题。

NOT NULL 约束的注意事项

  1. 影响插入操作
    • 在插入数据时,如果尝试将 NULL 值插入 NOT NULL 约束的列,会导致插入失败并返回错误。
  2. 与其他约束配合使用
    • NOT NULL 约束可以与其他约束(如 PRIMARY KEYUNIQUE)一起使用。PRIMARY KEY 默认包含 NOT NULL 约束,因此不需要为主键列单独指定 NOT NULL
  3. 影响列的修改
    • 对于已经添加了 NOT NULL 约束的列,在修改列的结构时,可能无法直接删除该约束,尤其是当该列已存在数据时。
  4. 数据清理问题
    • 在将 NOT NULL 约束应用到现有数据表时,需确保列中没有空值。如果列中存在 NULL 值,必须先处理这些数据,才能添加该约束。

参考资料