1. 外键的概念
表与表之间是存在关系的,这种我们叫做表关系,一般使用外键去维护。
外键是两表或多表之间建立一个关系,我们将这种关系叫做外键关系。例如:订单 - 用户
2. 外键如何创建
2.1 在创建表的时候创建外键
#super_member
CREATE TABLE `super_member` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_bin DEFAULT NULL,
`create` int(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
#super_order
CREATE TABLE `super_order` (
`rid` int(100) NOT NULL AUTO_INCREMENT,
`total` decimal(50,0) DEFAULT NULL,
`mid` int(11) DEFAULT NULL,
PRIMARY KEY (`rid`),
FOREIGN KEY (`mid`) REFERENCES `super_member` (`id`)
) ENGINE=InnoDB
此处创建2个表 分别是 `super_order` 和 `super_member` , 可以看到 mid 是 super_menber的外键
此处 需要注意的是:
由于mid建立了外键约束 ,所以super_order 在插入数据的时候 , mid 必须是主表(super_member)中存在ID , 否则就会报错
2.2 已存在表增加外键
ALTER TABLE super_order ADD FOREIGN KEY products_vendors_fk_1 (mid) REFERENCES super_member (id);
这样外键关系就创建起来了
3. 外键在查询中的使用
SELECT * FROM super_member,super_order where super_member.`id`=1 and super_member.`id` = super_order.`mid` ;
结果:
上述查询等价于:
select * from super_member inner join super_order on super_member.id = super_order.`mid` where super_member.id = 1
前者是 隐式内连接查询 , 后者是 显示内连接查询