MySQL-如何获取外键

时间:2018-08-02 06:17:21

标签: mysql

我正在阅读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列创建表兴趣,该列是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表具有行业列,并且通过某种魔术将其以某种方式转换为行业ID。现在,我有两个桌子

        profession
prof_id (primary key)
profession VARCHAR(20)

        my_contacts
contact_id (primary key)
profession

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

1 个答案:

答案 0 :(得分:1)

我只是在回答我认为是您的问题中最大的疏忽,这是关于您在这里所说的话:

  

使用表contact_id列创建表兴趣,该列是my_contacts表的外键

向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)
);