在数据库表中,我们可以为列添加规则,这些规则被称为约束。这些规则控制了可以存储在列中的数据。
例如,如果一列具有 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_id 和 college_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 NULL
和 UNIQUE
约束的组合。这意味着该列值用于唯一标识行。例如,
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。
另请阅读