我正在完成我的任务。它有8个表。每个表都有一个主键。如何生成表的外键?
我的理由是,当我生成主键时,左侧会出现一个键符号。
如何制作外键?
答案 0 :(得分:1)
这是主题的MySQL docs - 你可能想看看它。基本上,这是你做的一个例子:
CREATE TABLE `table_1` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `table_2` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
`table1_id` INT(11) NOT NULL REFERENCES table_1(`id`)
)
这基本上应该table_2.table1_id
引用table_1.id
作为外键。
答案 1 :(得分:0)
在table1(引用表)和table2(主表)之间添加外键的SQL是:
ALTER TABLE table1
ADD CONSTRAINT FOREIGN KEY table1_table2_FK
REFERENCES table2 (intId) ON (intTable2Id)
答案 2 :(得分:0)
您的混淆源于您认为外键是主键的修改版本。它不是,它是一个单独的项目。
例如,Customers表中的CustomerID将具有主键,但Orders表中的CustomerID将是外键引用(指向)Customers表中的主键。 / p>
在Customers表中,主键用于唯一标识每个客户。在订单表中,CustomerID上的外键用于保证每个订单属于客户表中的现有记录。
您可以拥有主键而无需建立任何外键,它仍然可以在识别记录时发挥作用。但是,如果没有主键,则不能在其他表中使用外键(或者,在极少数情况下,在同一个表中),因为主键 name是外键定义的一部分。并且您可以在不同的表格中(在极少数情况下在同一个表格中)指向任意数量的外键,并指向单个主键。