MySQL--多表设计

一对多

  • 在多的一方设置外键, 来建立两张表的联系

一对一

  • 看成特殊的一对多, 在任意一张表中设置外键

多对多

  • 建立中间表, 同时设置两张表的外键
注意
  1. 外键一般设置逻辑外键, 不再采用物理外键, 方便数据的处理
  2. 以上多对多, 一对多, 一对一都只是两张表之间的联系, 表示的是各表中数据的对应, 而不是表的数量

多表查询

  • 在单表查询的基础上, 直接在加上另一张表即可
select * from tb_emp,tb_dept;
//直接这写会得到所有笛卡尔积的数据, 会有很多不符合要求的数据产生
//所以一般我们要加上查询条件, 去掉不需要的数据
select * from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id;

多表查询-连接查询

内连接

  • 显式内连接的inner可以省略
  • on后面跟连接条件, where后面跟查询条件
    eg:
//隐式内连接
select tb_emp.name '姓名',tb_dept.name '部门名称' from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id;
//显式内连接
select tb_emp.name '姓名',tb_dept.name '部门名称' from tb_emp inner join tb_dept on tb_emp.dept_id = tb_dept.id;

外连接

  • outer可以省略
    eg:
//左外连接
//左外连接将返回左表中的所有记录,同时返回与右表匹配的记录。如果右表中没有匹配的记录,则将返回NULL。
select tb_emp.name '姓名',tb_dept.name '部门名称' from tb_emp left join tb_dept on tb_emp.dept_id = tb_dept.id;
//右外连接
//右外连接将返回右表中的所有记录,同时返回与左表匹配的记录。如果左表中没有匹配的记录,则将返回NULL。
select tb_emp.name '姓名',tb_dept.name '部门名称' from tb_emp right join tb_dept on tb_emp.dept_id = tb_dept.id;

子查询


eg:

//标量子查询
select name from tb_emp where dept_id = (select id from tb_dept where name = '教研部');
select * from tb_emp where entrydate > (select entrydate from tb_emp where name = '方东白');
//列子查询
//返回结果一列多行
select * from tb_emp where dept_id in(select id from tb_dept where name in('教研部','咨询部'));
//行子查询
//返回结果一行多列
select * from tb_emp where (entrydate,job) = (select entrydate,job from tb_emp where name = '韦一笑');
//表子查询
//返回结果多行多列,子表
select e.*,tb_dept.name from (select * from tb_emp where entrydate > '2006-01-01') e, tb_dept where e.dept_id = tb_dept.id;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MySQL的多表操作 1 多表关系 MySQL多表之间的关系可以概括为:一对一、一对多/多对一关系,多对多 1.1...
    AdRainty阅读 233评论 0 1
  • 目录  多表关系 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由...
    java的小粉丝阅读 369评论 0 0
  • 一、表的关系分析: 用户和订单:一个用户可以有多个订单,但每个订单只能属于一个用户,所以是一对多的关系。商品和分类...
    zengsiyong阅读 7,301评论 0 10
  • 上篇文章我们学习了MySQL基础——约束,这篇文章我们学习MySQL基础——多表查询。 多表关系 在数据表中,各个...
    白巧克力LIN阅读 377评论 0 2
  • 1 外键约束 表是用来保存实际生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据...
    对易_ce65阅读 466评论 0 0