跳到主要内容

SQL约束

提示

1.约束的定义和类型:SQL约束是控制表列中数据的规则,包括 NOT NULLUNIQUEPRIMARY KEYFOREIGN KEYCHECKDEFAULTCREATE INDEX

2.约束的作用NOT NULL 防止存储空值,UNIQUE 确保列值的唯一性,PRIMARY KEY 为行提供唯一标识,FOREIGN KEY 建立表之间的关联,CHECK 验证数据符合特定条件,DEFAULT 设置缺省值,CREATE INDEX 提高查询效率。

3.约束的应用:约束可在创建表时定义,或通过 ALTER TABLE 添加到现有表,它们帮助维护数据的完整性和准确性。

在数据库表中,我们可以向列添加称为约束的规则。这些规则控制能够存储在列中的数据。

例如,如果一列具有 NOT NULL 约束,这意味着该列不能存储 NULL 值。

SQL 中使用的约束包括:

约束描述
NOT NULL值不能为 null
UNIQUE值不能与之前的值相同
PRIMARY KEY用于唯一标识一行
FOREIGN KEY引用另一张表中的行
CHECK验证新值是否满足条件
DEFAULT如果未提供,则设置默认值
CREATE INDEX用于加速读取过程

注意: 这些约束也被称为完整性约束。

NOT NULL 约束

列中的 NOT NULL 约束意味着该列不能存储 NULL 值。例如,

CREATE TABLE Colleges (
college_id INT NOT NULL,
college_code VARCHAR(20) NOT NULL,
college_name VARCHAR(50)
);

这里,Colleges 表的 college_idcollege_code 列不允许 NULL 值。

要了解更多,请访问 SQL NOT NULL 约束

UNIQUE 约束

列中的 UNIQUE 约束意味着该列必须有唯一的值。例如,

CREATE TABLE Colleges (
college_id INT NOT NULL UNIQUE,
college_code VARCHAR(20) UNIQUE,
college_name VARCHAR(50)
);

这里,college_code 列的值必须是唯一的。类似地,college_id 的值也必须是唯一的,且不能存储 NULL 值。

要了解更多,请访问 SQL UNIQUE 约束

PRIMARY KEY 约束

PRIMARY KEY 约束简单地结合了 NOT NULLUNIQUE 约束。它意味着列的值用于唯一标识一行。例如,

CREATE TABLE Colleges (
college_id INT PRIMARY KEY,
college_code VARCHAR(20) NOT NULL,
college_name VARCHAR(50)
);

这里,college_id 列的值是行的唯一标识符。同样,它不能存储 NULL 值且必须是 UNIQUE 的。

要了解更多,请访问 SQL PRIMARY KEY

FOREIGN KEY 约束

列中的 FOREIGN KEY(在某些数据库中称为 REFERENCES)约束用于引用存在于另一张表中的记录。例如,

CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT REFERENCES Customers(id)
);

这里,college_code 列的值引用了另一个名为 Customers 的表中的行。

这意味着 Orders 表中的 customer_id 值必须来自 Customers 表的 id 列的值。

要了解更多,请访问 SQL 外键

CHECK 约束

CHECK 约束在允许表中的值之前检查条件。例如,

CREATE TABLE Orders (
order_id INT PRIMARY KEY,
amount INT CHECK (amount >= 100)
);

这里,amount 列的值必须 大于或等于 100。如果不是,SQL 语句会导致错误。

要了解更多,请访问 SQL CHECK 约束

DEFAULT 约束

DEFAULT 约束用于在我们尝试在列中存储 NULL 时设置默认值。例如,

CREATE TABLE College (
college_id INT PRIMARY KEY,
college_code VARCHAR(20),
college_country VARCHAR(20) DEFAULT 'US'
);

这里,college_country 列的默认值是 US

如果我们尝试在 college_country 列中存储 NULL 值,其值将是 US

要了解更多,请访问 SQL DEFAULT 约束

CREATE INDEX 约束

如果某个列具有 CREATE INDEX 约束,在使用该列进行数据检索时检索数据的速度更快。例如,

-- 创建表
CREATE TABLE Colleges (
college_id INT PRIMARY KEY,
college_code VARCHAR(20) NOT NULL,
college_name VARCHAR(50)
);

-- 创建索引
CREATE INDEX college_index
ON Colleges(college_code);

这里,SQL 命令在 Customers 表上使用 customer_id 列创建了一个名为 customers_index 的索引。

注意: 当表中的记录较少时,我们看不到速度差异。然而,使用索引与不使用索引之间的速度差异很容易被察觉。

要了解更多,请访问 SQL CREATE INDEX