美文网首页
数据库外键

数据库外键

作者: 张不二01 | 来源:发表于2017-07-15 21:51 被阅读51次

    主键:一个表中确定一条记录的不可重复的表示,比如,一条记录包括身份证号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

    外键:用于表与表之间的关联,用于保持数据的一致性。从表外键的值是对主表主键值的引用,比如,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);
    

    相关文章

      网友评论

          本文标题:数据库外键

          本文链接:https://www.haomeiwen.com/subject/lhezhxtx.html