SQL FOREIGN KEY 外键约束
时间:2018-11-15 17:49:02 来源:igfitidea点击:
在本教程中,我们将学习强制在两个表中的数据之间建立链接的外键约束。
外键约束介绍
外键是用于强制两个表中数据之间关系的列或列的组合。包含外键的表称为外键表。
让我们看下面的表:
一个course有零个或多个batch,但是,一个batch必须属于一个course。
这个关系是使用courseid外键列定义的。batches表就称为外键表。
要创建外键,需要使用外键约束。
使用CREATE TABLE语句创建外键约束
下面的查询将使用CREATE TABLE语句创建外键约束:
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) )
让我们看一下下面的语句:
CONSTRAINT fk_courseid FOREIGN KEY(courseid) REFERENCES courses(courseid)
我们将batches表中的courseid列定义为引用courses表中courseid列的外键。
同时我们为外键约束指定了一个名称(fk_courseid),方便以后使用这个名称来删除约束。
当然,约束的名称fk_courseid是可选的。如果省略它,数据库引擎将为约束生成一个名称。
使用ALTER TABLE语句创建外键约束
如果你想在现有的表中创建外键约束,你可以使用如下的ALTER TABLE语句:
ALTER TABLE fk_tablename ADD FOREIGN KEY (fk) REFERENCES ref_tablename(fk)
例如,您可以在batches表中创建一个外键,如下所示:
ALTER TABLE batches ADD FOREIGN KEY (courseid) REFERENCES courses(courseid)
删除外键约束
要删除外键约束,还可以使用以下格式的ALTER TABLE语句:
ALTER TABLE fk_table(表名) DROP CONSTRAINT constraint_name(外键约束名称)
例如,要删除fk_courseid外键约束,可以使用以下语句:
ALTER TABLE batches DROP CONSTRAINT fk_courseid