一,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字段
查看建表语句
一一对应关系
插入数据
首先插入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)
插入女人并设置对应丈夫关系
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)
以下插入报错
husband可以为空代表为单身狗
mysql> insert into woman values(‘3‘, ‘小红‘, null);
查看数据
查询夫妻信息
mysql> SELECT man.name AS 丈夫, woman.name AS 妻子 FROM man INNER JOIN woman ON man.id=woman.husband;
当man.id和woman.huaband相同时查询数据即显示丈夫和妻子对应信息
原文:https://www.cnblogs.com/minseo/p/14318464.html