摘要:在本教程中,您将学习如何使用 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 值。
以下语句将失败,因为它试图向 email 和 phone 列插入 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值。
数据库 #
- PostgreSQL NOT NULL 约束
- MySQL NOT NULL 约束
- MariaDB NOT NULL 约束
- Oracle NOT NULL 约束
- Db2 NOT NULL 约束
- SQLite NOT NULL 约束
测验 #
本教程是否有帮助?