MySQL多表操作(一对一 一对多 多对多)

  参考:https://blog.csdn.net/zuosixiaonengshou/article/details/53011452

  一,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字段

   查看建表语句

MySQL多表操作(一对一 一对多 多对多)

 

   一一对应关系

MySQL多表操作(一对一 一对多 多对多)

 

   插入数据

  首先插入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多表操作(一对一 一对多 多对多)

 

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

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)

   以下插入报错

MySQL多表操作(一对一 一对多 多对多)

 

   husband可以为空代表为单身狗

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

   查看数据

 

MySQL多表操作(一对一 一对多 多对多)

   查询夫妻信息

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

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

MySQL多表操作(一对一 一对多 多对多)

 

 

  

MySQL多表操作(一对一 一对多 多对多)

上一篇:【MyBatis】SqlSession相关的生命周期及作用域


下一篇:数据库连接池DBCP使用方式