mySQL之多对一,一对一,多对多

本文详细解释了一对一、多对一及多对多这三种数据库表间的关系,并通过实例展示了如何在MySQL中创建这些关系。

多对一

一张表的外键对应另外一张表的主键:外键字段的值可以有多个也就是多条记录,另外一张表的主键是主键,意味着每条记录是唯一的,这就是多对一的关系。

一对一

可以在多对一的基础上进行设限就可以了,只要外键字段的值唯一对应一条主键字段的记录,对外键设置unique即可。

两张表:学生表和客户表
一对一:一个学生是一个客户,一个客户有可能变成一个学校,即一对一的关系

select * from client;

idnametelqq
1a111111
2a111111
3a111111
4a111111
5a111111
6a111111
7a111111
8a111111
9a111111
10a111111
11a111111

create table client(id int auto_increment primary key,name varchar(10),te
l int,qq int);
Query OK, 0 rows affected (0.31 sec)

mysql> insert into client(name,tel,qq) values(‘a’,111,111);
Query OK, 1 row affected (0.07 sec)

mysql> create table stu(
-> id int auto_increment primary key,
-> course varchar(20),
-> cid int,
-> foreign key(cid) references client(id)
-> on delete cascade
-> on update cascade,
-> unique(cid)
-> );
Query OK, 0 rows affected (0.56 sec)

多对多

一张t1或者二张表t2,一张表t1对另一张表t2有多对一关系,另一张表t2对这张表t1也有多对一关系,这种情况下需要建一张新表t3来记录t1表和t2表的关系,这种就是多对多的关系。还要注意一点的是需要考虑场景:需不需要加unique对t3表内的字段进行联合约束,具体情况具体分析!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值