SQL FOREIGN KEY 外键约束


在本教程中,我们将学习强制在两个表中的数据之间建立链接的外键约束。

外键约束介绍

外键是用于强制两个表中数据之间关系的列或列的组合。包含外键的表称为外键表。

让我们看下面的表:

一个course有零个或多个batch,但是,一个batch必须属于一个course。
这个关系是使用courseid外键列定义的。batches表就称为外键表。

要创建外键,需要使用外键约束。

使用CREATE TABLE语句创建外键约束

下面的查询将使用CREATE TABLE语句创建外键约束:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE batches (
batchid INT NOT NULL,
batchname VARCHAR(255) NOT NULL,
begindate DATE NOT NULL,
enddate DATE NOT NULL,
courseid INT NOT NULL,
PRIMARY KEY (batchid),
CONSTRAINT fk_courseid FOREIGN KEY(courseid)
REFERENCES courses(courseid)
)

让我们看一下下面的语句:

1
CONSTRAINT fk_courseid FOREIGN KEY(courseid) REFERENCES courses(courseid)

我们将batches表中的courseid列定义为引用courses表中courseid列的外键。

同时我们为外键约束指定了一个名称(fk_courseid),方便以后使用这个名称来删除约束。
当然,约束的名称fk_courseid是可选的。如果省略它,数据库引擎将为约束生成一个名称。

使用ALTER TABLE语句创建外键约束

如果你想在现有的表中创建外键约束,你可以使用如下的ALTER TABLE语句:

1
2
3
ALTER TABLE fk_tablename
ADD FOREIGN KEY (fk)
REFERENCES ref_tablename(fk)

例如,您可以在batches表中创建一个外键,如下所示:

1
2
3
ALTER TABLE batches
ADD FOREIGN KEY (courseid)
REFERENCES courses(courseid)

删除外键约束

要删除外键约束,还可以使用以下格式的ALTER TABLE语句:

1
2
ALTER TABLE fk_table(表名)
DROP CONSTRAINT constraint_name(外键约束名称)

例如,要删除fk_courseid外键约束,可以使用以下语句:

1
2
ALTER TABLE batches
DROP CONSTRAINT fk_courseid


原文链接:https://codingdict.com/