sql外键需要输入吗_SQL外键

在本教程中,将学习SQL外键以及如何创建FOREIGN KEY约束以强制表之间的关系。

1. SQL外键约束简介

外键是一列或一组列,用于强制两个表中的数据之间的链接。 在外键引用中,第一个表的主键列(或多个列)由第二个表的列(或列)引用。 第二个表的列(或列)成为外键。

在创建或更改表时,可以使用FOREIGN KEY约束创建外键。 下面来看一个简单的例子以更好地理解。

2. SQL FOREIGN KEY约束示例

请参阅以下project表和project_assignments表:

CREATE TABLE projects (

project_id INT AUTO_INCREMENT PRIMARY KEY,

project_name VARCHAR(255),

start_date DATE NOT NULL,

end_date DATE NOT NULL

);

CREATE TABLE project_milestones(

milestone_id INT AUTO_INCREMENT PRIMARY KEY,

project_id INT,

milestone_name VARCHAR(100)

);

每个项目可能有零个或多个里程碑,而一个里程碑必须属于一个且只有一个项目。 使用这些表的应用程序必须确保project_milestones表中的每一行都在projects表中存在相应的行。 换句话说,没有项目就不可能存在里程碑。

不幸的是,用户可能使用客户端工具编辑数据库,或者如果应用程序中存在错误,则可能会在project_milestones表中添加一行,该行不对应于项目表中的任何行。 或者用户可以删除项目表中的行,在project_milestones表中留下孤立的行。 这会导致应用程序无法正常工作。

解决方案是向project_milestones表添加SQL FOREIGN KEY约束,以强制执行project表和project_milestones表之间的关系。

可以在创建表时创建FOREIGN KEY约束,如下所示:

CREATE TABLE project_milestones (

milestone_id INT AUTO_INCREMENT PRIMARY KEY,

project_id INT,

milestone_name VARCHAR(100),

FOREIGN KEY (project_id)

REFERENCES projects (project_id)

);

FOREIGN KEY子句将project_milestones表的project_id设置为引用project表的project_id列的外键。

FOREIGN KEY (project_id)

REFERENCES projects (project_id)

可以为FOREIGN KEY约束指定名称,如下所示:

CREATE TABLE project_milestones (

milestone_id INT AUTO_INCREMENT PRIMARY KEY,

project_id INT,

milestone_name VARCHAR(100),

CONSTRAINT fk_project FOREIGN KEY (project_id)

REFERENCES projects (project_id)

);

hk_project是FOREIGN KEY约束的名称。将FOREIGN KEY约束添加到现有表

,要向现有表添加FOREIGN KEY约束,请使用ALTER TABLE语句。

ALTER TABLE table_1

ADD CONSTRAINT fk_name FOREIGN KEY (fk_key_column)

REFERENCES table_2(pk_key_column)

假设project_milestones列已经存在,但是没有任何预定义的外键,如果想要为project_id列定义FOREIGN KEY约束。 为此,请使用以下ALTER TABLE语句:

ALTER TABLE project_milestones

ADD CONSTRAINT fk_project FOREIGN KEY(project_id)

REFERENCES projects(project_id);

3. 删除外键约束

要删除外键约束,还要使用ALTER TABLE语句,如下所示:

ALTER TABLE table_name

DROP CONSTRAINT fk_name;

如果使用的是MySQL,则可以使用更清晰的语法,如下所示:

ALTER TABLE table_name

DROP FOREIGN KEY fk_name;

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

ALTER TABLE project_milestones

DROP CONSTRAINT fk_project;

在本教程中,我们介绍了外键概念,并演示了如何使用SQL FOREIGN KEY约束创建和删除外键。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值