gpt4 book ai didi

MySQL - 如何获得外键

转载 作者:行者123 更新时间:2023-11-29 10:07:28 26 4
gpt4 key购买 nike

我正在阅读 Head First SQL,并且对外键的使用感到非常困惑。第7章展示了一个使用外键创建新表的示例,如下

CREATE TABLE interests(
int_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
interest VARCHAR(50) NOT NULL,
CONSTRAINT my_contacts_contact_id_fk
FOREIGN KEY (contact_id)
REFERENCES my_contacts (contact_id)
);

如果我没记错的话,它会使用 contact_id 列创建表interests,该列是 my_contacts 表中的外键。然而,当我阅读第8章时,这本书要求我们拉出列(例如专业),以创建一个新表以供引用。例如,

        profession
prof_id (primary key) (parent key)
profession VARCHAR(20)

my_contacts
contact_id (primary key)
prof_id (foreign key)

my_contacts.prof_id 来自哪里?最初 my_contacts 表有 professional 列,它通过某种魔法以某种方式变成了 professional_id 。现在,我有两张 table

        profession
prof_id (primary key)
profession VARCHAR(20)

my_contacts
contact_id (primary key)
profession

我是否需要将 professional.prof_id 映射到 my_contacts,然后删除 my_contacts.profession 列,以便获得外键?

最佳答案

我的回答只是为了解决我认为您的问题中最大的疏忽,即您在这里所说的内容:

it creates table interests with a column contact_id which is the foreign key from my_contacts table

向 MySQL 表添加外键约束不会创建列。相反,您仍然需要像创建任何其他列一样为外键创建列。因此,您的 CREATE TABLE 语句应如下所示:

CREATE TABLE interests (
int_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
interest VARCHAR(50) NOT NULL,
contact_id INT,
CONSTRAINT my_contacts_contact_id_fk FOREIGN KEY (contact_id)
REFERENCES my_contacts (contact_id)
);

关于MySQL - 如何获得外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51646704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com