关于引用完整性即外键的用法

先说点基础知识,每张表必须要有主键,先有主键才有外键,没有主键,是添加不成功外键的。

在很多时候我们需要两张表甚至三张表进行关联查询,这时候就需要用到外键了,但有的人说用外键效率不高,用冗余。

这里暂时不讲冗余,只聊一下外键:

接着上面的讲,两张表要关联查询,一般都有主表和从表的,例如
建一张学生表student,如下图:
这里写图片描述

在建一张分数表score ,如下图:
这里写图片描述

我们来分析,先要有学生才会有分数,所以要查找某一位学生的分数,肯定是先查学生,所以这里,学生表是主表,分数表是从表(也有人叫子表),
建子表的时候,你得知道这是那个学生的分数吧,所以就得引用主表中的学号stuid字段(列)。

上述表中的id是主键;

这时候要关联两张表(或者说约束)就利用外键,当然谁引用,就让谁创建外键,上面是score表中引用了student的学号stuid字段,所以就在score表中创建外键。

都是从(子)表创建外键。

create table score(id int primary key,
                    name varchar(20),
                    stuid int,
                    score int
                    constraint fk_student_score_stuid foreign key(stuid) references student(stuid));
    加了一个名称为fk_student_score_stuid 外键约束,给stuid这一列加的,key(stuid)是指score表中的这一列,引用了student这张表中的stuid,不用说student(stuid)中的stuid肯定是指student表中的stuid字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值