一对一
概念:一张表的一个字段和另外一张表的一个字段唯一对应。就如同婚姻关系,一个丈夫对应一个妻子
条件:某一张表需要增加一个外键且唯一和主表对应
例如:
husband
表:
id | name | age |
1 | 健伯 | 30 |
2 | 泽伟 | 31 |
3 | 正豪 | 20 |
wife表
id | name | age | h_id |
1 | 王珍 | 24 | 2 |
2 | 倩雪 | 23 | 1 |
3 | 美莲 | 26 | 3 |
CREATE TABLE if not exists husband(id int PRIMARY KEY auto_increment,name char ( 20 ),age int)ENGINE=INNODB DEFAULT CHARSET=utf8;CREATE TABLE wife(id int PRIMARY KEY auto_increment,name varchar ( 20 ),age int ,h_id int UNIQUE,FOREIGN KEY(h_id) REFERENCES husband(id))ENGINE=INNODB DEFAULT CHARSET=utf8;插入数据INSERT INTO husband VALUES ( null , ' 健柏 ' , 30 );insert into wife values ( null , ' 倩雪 ' , 24 , 1 );
数据显示
再次插入数据,id对应为1
insert into wife values ( null , ' 王珍 ' , 24 , 1 );
一对多
概念:一张表的一个字段和另外一张表的一个字段对应。但是第一张表的一个字段值,可以对应另外一张表中的一 个字段的多个值
例如:一个学生表和一个班级表
CREATE TABLE clazz(id int PRIMARY KEY auto_increment,name char ( 20 ) not null UNIQUE)ENGINE=INNODB DEFAULT CHARSET=utf8;insert into clazz (name) values ( 'java' ), ( 'h5' ), ( ' 嵌入式 ' );CREATE TABLE student(id int PRIMARY KEY auto_increment,name varchar ( 20 ),age int ,clazz_id int ,FOREIGN KEY(clazz_id) REFERENCES clazz(id))ENGINE=INNODB DEFAULT CHARSET=utf8;insert into student values ( null , ' 陈陈 ' , 26 , 1 );insert into student values ( null , ' 宇宇 ' , 25 , 2 );insert into student values ( null , ' 静静 ' , 24 , 3 );
表中数据展示