SQL NOT NULL 约束

摘要:在本教程中,您将学习如何使用 SQL NOT NULL 约束来确保列不能有 NULL 值。

SQL NOT NULL 约束简介 #

在 SQL 中,NULL 表示未知值或缺失数据。如果您在定义表列时未使用任何约束,该列将默认接受 NULL 值。

为确保列不能有 NULL 值,您可以使用 NOT NULL 约束。

NOT NULL 约束防止向指定列插入更新 NULL 值。这对于定义那些绝不应为 NULL 的重要列很有帮助。

要将 NOT NULL 约束应用于列,您可以使用以下语法:

column_name datatype NOT NULLCode language: SQL (Structured Query Language) (sql)

例如,下面的语句创建了一个名为 candidates 的表来存储候选人信息:

CREATE TABLE candidates (
  first_name VARCHAR(255) NOT NULL,
  last_name VARCHAR(255) NOT NULL,
  email VARCHAR(512) NOT NULL,
  phone VARCHAR(25) NOT NULL
);Code language: SQL (Structured Query Language) (sql)

试一试

candidates 表包含四个带有 NOT NULL 约束的列。这意味着您不能向这些列中的任何一列插入 NULL 值。

以下语句将失败,因为它试图向 emailphone 列插入 NULL 值:

INSERT INTO
  candidates (first_name, last_name, email, phone)
VALUES
  ('John', 'Doe', NULL, NULL);Code language: SQL (Structured Query Language) (sql)

试一试

然而,下面的 insert 语句会成功,因为它为所有 NOT NULL 列提供了有效值:

INSERT INTO
  candidates (first_name, last_name, email, phone)
VALUES
  (
    'John',
    'Doe',
    '[email protected]',
    '(408)-111-2222'
  );Code language: SQL (Structured Query Language) (sql)

试一试

为现有列添加 NOT NULL 约束 #

通常,您在创建表时为列添加 NOT NULL 约束。但有时,您可能想为现有的可为空(nullable)的列应用 NOT NULL 约束。

为此,您需要遵循以下步骤:

首先,使用 UPDATE 语句将 NULL 更新为非 NULL 值:

UPDATE table_name
SET
  column_name = non_null_value
WHERE
  column_name IS NULL;Code language: SQL (Structured Query Language) (sql)

请注意,我们在 WHERE 子句中使用了 IS NULL 运算符来查找 column_name 列中值为 NULL 的行。

其次,使用 ALTER TABLE 语句向列添加 NOT NULL 约束:

ALTER TABLE table_name
MODIFY column_name data_type NOT NULL;Code language: SQL (Structured Query Language) (sql)

以下示例展示了如何为现有列添加 NOT NULL 约束。

首先,创建一个名为 interviews 的表来存储面试信息:

CREATE TABLE interviews (
  candidate_id INT NOT NULL,
  hiring_manager VARCHAR(255) NOT NULL,
  interview_date TIMESTAMP
);Code language: SQL (Structured Query Language) (sql)

试一试

其次,向 interview_date 列添加 NOT NULL 约束:

ALTER TABLE interviews 
MODIFY interview_date TIMESTAMP NOT NULL;Code language: SQL (Structured Query Language) (sql)

试一试

摘要 #

  • 使用 NOT NULL 约束来确保列不能有 NULL 值。

数据库 #

测验 #

本教程是否有帮助?
© .