SQL 约束

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

例如,如果一列具有 NOT NULL 约束,则表示该列不能存储 NULL 值。

SQL 中使用的约束有:

约束 描述
NOT 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 FOREIGN KEY


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
CREATE TABLE Colleges (
  college_id INT PRIMARY KEY,
  college_code VARCHAR(20) NOT NULL,
  college_name VARCHAR(50)
);

-- create index
CREATE INDEX college_index
ON Colleges(college_code);

在此,SQL 命令使用 college_id 列在 Colleges 表上创建名为 college_index 的索引。

注意:当表中记录较少时,我们无法看到速度差异。但是,我们可以很容易地注意到使用索引和不使用索引之间的速度差异。

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


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战