繁体   English   中英

SQL将外键添加到现有表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM