物理外键 foreign key
以下外键都是物理外键(数据库级别的外键),我们不建议使用(避免数据库过多造成困扰)
最佳实践
- 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
- 想使用多张表的数据时,想使用外键(程序去实现)
概念
- 公共关键字:一个表(从表)中的主关键字在另外一个表(主表)中作为外键
- 用于约束,使两个表之间形成关联
创建
方式一
-- 年级表 (从表)
createtable`grade`(
`gradeid`int(10)notnullauto_incrementcomment`年纪ID`,
`gradename`varchar(50)notnull commnet `年级名称`,
primarykey(`gradeid`)
)ENGINE=INNODBdefaultcharset= utf8
-- 学生信息表 (学号,姓名,性别,年级,手机,地址,出生日期,邮箱,身份证号)
createtable`student`(
`studentno`int(4)notnullcomment'学号',
`studentname`varchar(20)notnulldefault'匿名'comment'姓名',
`sex`tinyint(1)default'1' commnet '性别',
`gradeid`int(10)defaultnullcomment'年级',
`phoneNum`varchar(50)notnullcomment'手机',
`address`varchar(255)defaultnullcomment'地址',
`borndate`datetimedefaultnullcomment'生日',
`email`varchar(50)defaultnullcomment'邮箱',
`idCard`varchar(18)defaultnullcomment'身份证号',
primarykey(`studentno`),
key`FK_gradeid`(`gradeid`),
-- 定义外键key(可省略)
constraint`FK_gradeid`foreignkey(`gradeid`)references`grade`(`gradeid`)
-- 给外键Key增加约束
)ENGINE=innodbdefaultcharset=utf8
方式二
altertable`student`
addconstraint`FK_gradeid`foreignkey(`gradeid`)references`grade`(`gradeid`);