mysql中创建主外键关联的表及key的含意

在mysql里创建两张有主外键关联的表classes与student
classes就一个字段no int(4)
student两个字段stu_no int(4),classes_no int(4) 引用classes字面的no
create table classes(no int(4));
create table student(stu_no int(4) ,classes_no int(4) foreign key(classes_no) references classes(no));
当创建student的时候会报错,说不能创建表,原因是mysql中作为外键的列必须为key
create table classes(no int(4) ,key no (no));当然这样也行create table classes(no int(4) primary key);
create table student(stu_no int(4) ,classes_no int(4) foreign key(classes_no) references classes(no));
这样就能创建成功

那么key是什么呢?
desc classes你会发现在key列下面会有以下值中的一个:空/PRI/UNI/MUL
1. 如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列
2. 如果Key是PRI, 那么该列是主键的组成部分
3. 如果Key是UNI, 那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL)
4. 如果Key是MUL, 那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL

可能有人就想测试一下了,先create table classes(no int(4) ,key no (no));然后想将这个key给删了,但是你会发现mysql中没有删key的命令
于是找了一下,很多人说key就是index,于是一试alter table classes drop index no
然后desc classes发现key下面的值没了
接着create table student(stu_no int(4) ,classes_no int(4) foreign key(classes_no) references classes(no));就又会报错
所以我认为key就是index
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值