mysql查询设置1对1_MySQL多表操作(一对一 一对多 多对多)

一,1对1

1方建主表(id为主键字段), 一方或多方建外键字段(参考主表的主键id,加unique)

示例:一个女人(woman)对应一个丈夫(man)不能对应多个丈夫,一个丈夫也不能对应多个女人,妻子

创建man表(建表前创建一个test库)

mysql> create table man(

id varchar(32) primary key ,

name varchar(30)

);

创建woman表

mysql> create table woman(

id varchar(32) primary key ,

name varchar(30),

husband varchar(32) unique,

constraint wm_fk foreign key(husband) references man(id)

);

建表语句解析

unique # 设置约束 才是1对1否则为1对多

constraint wm_fk foreign key(husband) references man(id) #创建外键名为wm_fk 本表字段husband关联表man的id字段

查看建表语句

11e3aa63d2a32f97d759006cb6622f07.png

一一对应关系

a5189575d96b4018c5103a2dd8c5b7d0.png

插入数据

首先插入3个男人

mysql> insert into man values(‘1‘, ‘小明‘);

Query OK, 1 row affected (0.00 sec)

mysql> insert into man values(‘2‘, ‘小聪‘);

Query OK, 1 row affected (0.01 sec)

mysql> insert into man values(‘3‘, ‘老王‘);

Query OK, 1 row affected (0.00 sec)

294cdd7f5ea4467775e15f9d61190094.png

插入女人并设置对应丈夫关系

mysql> insert into woman values(‘1‘, ‘小花‘, 2);

Query OK, 1 row affected (0.00 sec)

mysql> insert into woman values(‘2‘, ‘小静‘, 1);

Query OK, 1 row affected (0.00 sec)

以下插入报错

71bb6e619924983f099c6cfc7f55a65c.png

husband可以为空代表为单身狗

mysql> insert into woman values(‘3‘, ‘小红‘, null);

查看数据

64a1cefb524388336a0c1883f2235d4e.png

查询夫妻信息

mysql> SELECT man.name AS 丈夫, woman.name AS 妻子 FROM man INNER JOIN woman ON man.id=woman.husband;

当man.id和woman.huaband相同时查询数据即显示丈夫和妻子对应信息

b5f1e3180b6b9221bd2ae1f7f7dba7a2.png

原文:https://www.cnblogs.com/minseo/p/14318464.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值