Mysql主键约束与外键约束

主键约束:primary key
声明了主键约束的列上不允许插入重复的值,一个表中只能有一个主键约束,通常加在编号列,会加快数据的查找速度,并且编号会按照从大到小的顺序排列
: 主键约束的列禁止插入null
外键约束:
声明了外键约束的列,插入的值必须在另一个表中出现过才行;外键列要和对应的主键列类型要保持一致
目的就是为了让两个表之间产生关联
foreign key(外键列) references 另一个表 (主键列)
auto_increment 自动增长,如果设置了自增列,在插入数据的时候,只需要赋值为null,就会获取当前的最大值然后加1插入
在这里插入图片描述
那有没有小伙伴很迷惑的说如果在主键上设置自增,那岂不是很矛盾,一个不允许为空,一个又要全部设置为null.其实在这里一点也不奇怪,有一个说法,在主键列上设置自增,正是有了自增列的出现,让本不允许的为空的主键,反而又可以为空了。`

#设置客户端连接服务器端的编码
set names utf8;
#丢弃数据库如果存在
drop database if exists zw;
#创建新的数据库,并设置编码格式
create database zw charset=utf8;
#进入创建的数据库
use zw;
#创建主表
create table zhu(
    zid int primary key,
    zname varchar(15)
);
#创建外表
create table wai(
    wid int primary key auto_increment,
    wname varchar(15),
    zhuid int,//意思就是说使这一列与主键产生关联
    foreign key (zhuid) references zhu(zid)
    //固定语法,foreign key(外键的意思)(zhuid外键表咧名子)references取值范围zhu(zid)主键列下的zid
);
#主表插入值
insert into zhu values
(10,'联想'),
(20,'戴尔'),
(30,'小米');
#外表插入值
insert into wai values
(null,'小米Air',20),
(null,'TP',10),
(null,'外星人',30);

那怎么让两个表之间产生关联呢,例如:联想所属TP,戴尔所属小米Air,小米所属外星人,
要想实现这个,就要用到多表查询语句了
select wname,zname from wai,zhu where zhuid=zid;
select 要与另一个表产生关联的表列,另一个表列 from 表名,另一个表名 主键列=外键列;
最后查询结果如下:
在这里插入图片描述

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端深造中

老板别忘了支持哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值