SQL 约束学习笔记
在 SQL 中,约束是用于限制数据插入、更新或删除的规则。通过使用约束,可以保证数据的完整性和一致性。本篇学习笔记将介绍 SQL 中常见的约束类型以及它们的用法。
1. NOT NULL 约束
NOT NULL 约束用于确保列中的每个行都包含值。如果尝试在 NOT NULL 列中插入 NULL 值,就会导致错误。例如,下面的代码创建了一个具有 NOT NULL 约束的新表:
sqlCopy CodeCREATE 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 CodeCREATE 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 CodeCREATE 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 CodeCREATE 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 CodeCREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT CHECK (age >= 18)
);
在该表中,age 列具有 CHECK 约束,其中指定了 age >= 18。如果尝试插入 age 值小于 18 的行,则会导致错误。
以上就是 SQL 中常见的约束类型及其用法。通过使用这些约束,可以确保数据的完整性和一致性,并防止无效或不正确的数据。