mysql的主外键_终于把 MySQL 的主外键搞懂了

基础是我的前面一篇关于主外键的关系的文章

首先创建 3 张表,并插入相应的数据:

create table student(

sid int(10) primary key not null,

name char(120),

sex char(120),

dept char(120)

);

插入数据

insert into student

values

(1,"mmm","nan","jisuanji dept");

insert into student

values

(2,"nnnn","nv","jiusanji dept");

insert into student

values

(3,"sss","nan","jisuanji dept");

创建一张课程表

create table course(

cid int(10) primary key not null,

cname char(120),

ccredit int(10)

);

插入数据:

insert into course

values

(11,"jisuanji",10);

insert into course

values

(12,"C_yuyan",8);

insert into course

values

(13,"C++",9);

创建学生选课表

create table stucourse(

scid int(10) primary key not null,

sid int(10),

cid int(10),

foreign key(sid) references student(sid),

foreign key(cid) references course(cid),

grade int(10)

);

插入数据

insert into stucourse

values

(1,1,11,90);

insert into stucourse

values

(2,1,12,88);

insert into stucoruse

values

(3,2,13,86);

insert into stucourse

values

(4,3,11,78);

在第三张表里面,设置了 stucourse 的外键链接,分别引用了 student  的 sid 外键 和 course 的 cid 外键

注意:外键的属性归属于主表,比如这里的 sid 是表 student 的外键,cid 是表 course 的外键,这两个字段由于被从表 stucourse 所引用,所以成为了外键,而并不是说 sid 和 cid 是从表 stucourse 的外键,外键只是对主表而言的,从表只是引用外键,并且 sid 和 cid 一起决定了一条记录,也就是哪个学生选了哪门课程,并且在 stucourse 表里面记录了该课程的成绩 grade,所以当 stucourse 表里面没有插入相关数据的时候,删除 student 表或者是 course 表里面的一条记录或者字段,是可以的,但是一旦 stucourse 表里面添加了相关数据,就不能删除 student 表 和 course 表里面的一条记录了,但是可以删除除了主键之外的某个字段。因为 student 表和 course 表之间没有主外键关系,他俩之间是不受约束的,只是他俩同时被 stucourse 表所约束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值