主键:一个表中确定一条记录的不可重复的表示,比如,一条记录包括身份证号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键:用于表与表之间的关联,用于保持数据的一致性。从表外键的值是对主表主键值的引用,比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
其中主键在哪个表中,该表就是主表
一,外键的基本操作:添加外键和删除外键
- 1,声明(添加)外键约束
alter table 从表 add [constraint] [外键名称] foreign key () references 主表 (主表的主键);
#[外键名称] 用于删除外键约束,一般建议“_fk”结尾。
alter table product add constraint product_category_fk foreign key (category_id) references category (cid);
#当然,也可以声明外键名称,如下,但是这样没办法删除外键
alter table product add foreign key (category_id) references category (cid);
- 2,删除外键
alter table 从表 drop foreign key 外键名称;
alter table product drop foreign key product_category_fk;
二,一对多关系外键:
原则:在多的一方创建一个字段,该字段作为外键,指向一的一方的主键!如上案例里面,产品是多的一方,种类是一的一方,在产品中创建category_id指向种类的主键cid
alter table product add constraint product_category_fk foreign key (category_id) references category (cid);
或者
alter table product add foreign key (category_id) references category (cid);
三,多对多关系外键:
Snip20170715_3.png原则:需要创建第三张表,作为从表,中间表至少有两个字段,这两个字段分别作为外键指向各自一方多主键。
- 假设上图中学生表为stu, 课程表是course, 中间的那张表为stu_course:
alter table stu_course add constraint stu_course_stu_fk foreign key (sno) references stu (sid);
alter table stu_course add constraint stu_course_course_fk foreign key (cno) references course (cid);
网友评论