SQL 约束(Constraints)


SQL约束是一种用于限制表格中数据输入的方法。在创建表格时,可以在列级别或表级别应用SQL约束。这种方法可以保证数据的有效性和一致性。本篇技术文档将介绍SQL约束的类型、用法和示例。

在SQL中,有如下类型的约束:

  1. NOT NULL :确保列不接受NULL值。

  2. UNIQUE :确保列中的所有值是唯一的。

  3. PRIMARY KEY :确保列的值是唯一标识每行。

  4. FOREIGN KEY :确保列中的值与另一表中的值匹配,保持数据一致性。

  5. CHECK :确保列中的值满足特定的条件。

以下为如何在SQL中应用这些约束。

  1. NOT NULL 约束

创建表时,可以将NOT NULL约束应用到一列上。当尝试插入空值时,会产生错误,因为该列不接受为空的值。以下是用法示例:

CREATE TABLE customer (
customer_id INT NOT NULL,
customer_name VARCHAR(40) NOT NULL,
customer_address VARCHAR(100) NOT NULL
);

  1. UNIQUE 约束

不同于NOT NULL, UNIQUE 约束确保所有值在表格中是唯一的。以下是用法示例:

CREATE TABLE customer (
customer_id INT PRIMARY KEY,
customer_email VARCHAR(40) UNIQUE
);

  1. PRIMARY KEY 约束

主键是一个非空唯一标识符,确保表格中每一行有唯一的标识符。通常是使用一个整数列,自动递增,例如用 INTEGER AUTO_INCREMENT 声明。以下是用法示例:

CREATE TABLE customer (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(40),
customer_email VARCHAR(100)
);

  1. FOREIGN KEY 约束

在一个表格中应用 FOREIGN KEY 约束,可以确保列中的值匹配到另一张表中的值,保持数据的一致性。以下是用法示例:

CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
);

  1. CHECK 约束

CHECK 约束用于限制值的范围。支持使用>,<,<=,>=,=等运算符,同时支持使用LIKE、IN、BETWEEN、IS NULL运算符。以下是用法示例:

CREATE TABLE birthday (
name VARCHAR(40) NOT NULL,
birth_date DATE CHECK (birth_date > ‘1900-01-01’ AND birth_date < ‘2012-01-01’)
);

总结

本文中,我们介绍了SQL中的五种约束类型。尽管你可能并不需要在每一列上都应用约束,但在关键列上应用合适的约束,能够有效地保护和管理数据并提高数据的一致性。