数据库 SQL 约束之 FOREIGN KEY

啊?你是在写文档还是在和我聊天?我知道什么是SQL约束,但每次听到它,感觉就像在听圣经...
上周,一位客户问我一个关于数据库的问题,我几乎被这个问题搞糊涂了。
您提到了外键...例如,您提到了学生表和订单表。
order表中的P_Id应该指向Student表中的ID吧?这就像你租的房子一样。
您将从房东(学生表格)处收到钥匙(ID)(订单)。
你不能把钥匙插进别人家的锁孔里,对吧?这就是外键的作用,保证数据关系匹配。

您可以在创建表时添加 FOREIGN KEY,也可以稍后修改表。
没关系。
例如,创建订单表时,只需编写 FOREIGN KEY (P_Id) REFERENCES Student(ID) 即可。
如果后来发现此规则不合适,可以使用 DROP FOREIGN KEY 将其删除。

但是说实话,之前做项目的时候,最头疼的就是这个外键。
例如,广东省某公司的数据库被迫删除学生表中的记录。
结果orders表中很多订单爆炸了,导致整批数据都挂掉了。
那是因为有外键约束来防止类似的愚蠢事情。
所以外键是好的,可以为你省去很多麻烦,但你也需要意识到它们有多么“霸道”。

无论如何,你需要了解这个FOREIGN KEY的含义、如何使用它以及何时使用它。
下一篇文章将介绍 CHECK 约束。
这个名称是否使数据更具“观察性”?我会回去再读一些...

如何在MySQL中设置外键约束以及外键的作用

创建表时,a_id 被定义为主键。
表b中的b_id旨在引用表a的a_id。
请记住,您编写了 CREATE TABLE a(a_id INT PRIMARY KEY, a_name VARCHAR(2 )) 并且表 a 整洁。
然后创建表b并获取b_id和b_name。
我以为 b_id 指的是 a_id,所以我写了 ALTER TABLE b ADD CONSTRAINT fk_b_a FOREIGN KEY(b_id) REFERENCES a(a_id)。
这样做。
b_id必须是a_id的值;不能轻易填充。
后来我尝试了一下,如果 b_id 填充的值不在表 a 中,则数据库确实对我来说被拒绝。
很好,这个外键限制保证了数据的完整性,防止人们转手。
再想一想如果从a表中删除a_id。
b表中相应的外键记录也会被自动删除。
避免那些复杂的外键绑定。
是的,当时我不知道外键对于数据库有多重要。
这不仅保证了数据的准确性,而且使数据库运行得更快。

在sql中对数据库现有的三个表添加适当的主键约束及外键约束,如何完成,请大家帮帮忙,谢谢

直接添加主键和外键。

用于主键: sql 添加约束 PK_table 主键分组(列 1 ,列 2 )
对于外键: sql 添加约束 FK_table 外键(列 1 )参考表 2 (pk 列)
将 PK_table 替换为新的约束名称,并替换 FK_table。
Table2 和 pkcolumn 也发生了变化。

我上周刚刚处理了类似的请求。
这第一。