[英]SQL Add foreign key to existing table
我已经开始阅读SQL,目前正在阅读Head First SQL书籍,并且正在使用MySQL。 我已经讲到了一个要点,它解释了如何使用外键创建新表以及如何将数据从单个表移至新表。 没有提到的是如何在旧表中创建外键并为其分配fk数据。 这些是表格:
my_contacts:
FirstName
LastName
Profession
电话
Profession:
Prof_ID PK
Profession
所以我要做的是在my_contacts中添加一个称为Prof_ID的附加列,并在其中填充
UPDATE my_contacts SET prof_id = (
SELECT prof_id FROM my_contacts WHERE my_contacts.profession = profession.profession
);
这可以完美匹配2个表中的职业名称并填充my_contacts.prof_id。 之后,我在此列上创建了约束和FK,并删除了my_contacts.profession。
我要竭尽全力的是语句的运行方式。 从我读过的SQL程序中,除非特别指定要使用order by和group by进行其他操作,否则该语句将如何运行。 那么,为什么该语句正确匹配? 与C#之类的语言不同,我正在努力了解其如何在数据中运行,我知道事件发生的顺序。 这就像一个循环语句吗?
永远感谢您的宝贵时间。
是的,就像一个循环。 my_contacts
所有行my_contacts
更新,因为UPDATE
语句中没有WHERE
子句。 您可以使用SELECT
语句为my_contacts
每一行找到正确的值。 这是my_contacts.profession
,因为my_contacts.profession
会为my_contacts
每一行更改其值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.