SQL 约束学习笔记

在 SQL 中,约束是用于限制数据插入、更新或删除的规则。通过使用约束,可以保证数据的完整性和一致性。本篇学习笔记将介绍 SQL 中常见的约束类型以及它们的用法。

1. NOT NULL 约束

NOT NULL 约束用于确保列中的每个行都包含值。如果尝试在 NOT NULL 列中插入 NULL 值,就会导致错误。例如,下面的代码创建了一个具有 NOT NULL 约束的新表:

sqlCopy Code
CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(255) NOT NULL );

在该表中,name 和 email 列都具有 NOT NULL 约束,因此在进行 INSERT、UPDATE 或 DELETE 操作时,不能包含 NULL 值。

2. UNIQUE 约束

UNIQUE 约束用于确保列中的所有行都具有唯一的值。与 PRIMARY KEY 约束不同的是,UNIQUE 约束允许列中存在多个 NULL 值。例如,下面的代码创建了一个具有 UNIQUE 约束的新表:

sqlCopy Code
CREATE TABLE products ( id INT PRIMARY KEY, name VARCHAR(50) UNIQUE, price DECIMAL(10,2) NOT NULL );

在该表中,name 列具有 UNIQUE 约束,因此每个值必须是唯一的。如果尝试插入重复的值,则会导致错误。

3. PRIMARY KEY 约束

PRIMARY KEY 约束用于确保列中的所有行都具有唯一且非空的值。每个表只能具有一个 PRIMARY KEY 约束。例如,下面的代码创建了一个具有 PRIMARY KEY 约束的新表:

sqlCopy Code
CREATE TABLE orders ( id INT PRIMARY KEY, customer_id INT NOT NULL, date_ordered DATE NOT NULL );

在该表中,id 列具有 PRIMARY KEY 约束,因此每个值必须是唯一且非空的。

4. FOREIGN KEY 约束

FOREIGN KEY 约束用于确保列中的所有值都存在于另一个表的列中。FOREIGN KEY 约束通常与 PRIMARY KEY 约束一起使用,以创建表之间的关系。例如,下面的代码创建了两个具有 FOREIGN KEY 约束的新表:

sqlCopy Code
CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(255) NOT NULL ); CREATE TABLE orders ( id INT PRIMARY KEY, customer_id INT NOT NULL, date_ordered DATE NOT NULL, FOREIGN KEY (customer_id) REFERENCES customers(id) );

在该示例中,orders 表中的 customer_id 列具有 FOREIGN KEY 约束,其引用了 customers 表中的 id 列。这意味着在进行 INSERT、UPDATE 或 DELETE 操作时,customer_id 值必须是 customers 表中的 id 值之一。

5. CHECK 约束

CHECK 约束用于确保列中的值满足指定条件。例如,可以使用 CHECK 约束检查 age 列中的值是否大于等于 18:

sqlCopy Code
CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT CHECK (age >= 18) );

在该表中,age 列具有 CHECK 约束,其中指定了 age >= 18。如果尝试插入 age 值小于 18 的行,则会导致错误。

以上就是 SQL 中常见的约束类型及其用法。通过使用这些约束,可以确保数据的完整性和一致性,并防止无效或不正确的数据。