本专栏收录了数据库的知识点,而基础DQL系列文章将对每种查询都单独写一篇文章,提供给有需要的小伙伴参考,本专栏地址可以戳下面链接查看
🎈 数据库知识点总结(持续更新中):【数据库知识点】
🔑 数据库相关练习题(持续更新中):【数据库练习题】
🔥 一个提供给Java学习者的专栏:【拼图小游戏(Java)】
一、前言
在前几篇文章中介绍的数据查询都是单表查询,从本文开始将讲述多表查询。在开始讲述多表查询之前,先讲述一下多表关系已经多表查询的相关概念,有助于后面理解。
二、多表关系
1.一对多(多对一)
- 很常见的例子就是部门与员工的关系:一个部门有很多员工,但是一个员工对应的只有唯一的一个部门
- 我们想要在数据库层面体现这种关系,就要在
多的一方建立外键
,指向一的一方的主键
;所以我们把外键建立在员工表上,并指向部门表,让两个表产生联系
2.多对多
- 很常见的例子就是学生与课程的关系:一个学生可以选修很多课,一门课也可以有很多学生去选择
- 我们要想在数据库的层面上体现这种关系,就要
建立第三张中间表
,中间表至少包含两个外键
,分别关联两方主键
- 在DG软件中我们如果实验一下,并查看关系可以得到如下结果
3.一对一关系
-
很常见的例子就是用户与用户详情的关系
-
我们要想在数据库的层面上体现这种关系,就要将
单表拆分
,将一张表的基础字段
放在一张表中,其它详情字段
放在另一张表中,来提升效率
- 然后在任意
一方加入外键
,关联另一方的主键
,并设置外键唯一
(UNIQUE
),这样才能保证是一对一的关系
三、多表查询
1.概述
-
从多张表中查询数据
-
在笛卡儿积中要寻找
属性值相同
的
2.分类
-
内连接:查询A、B交集部分数据
-
左外连接:查询
左表以及两表交集
部分数据 -
右外连接:查询
右表以及两表交集
部分数据 -
自连接:当前表与自身的连接查询,
必须用表别名
-
子查询
四、结语
本文只是讲述了多表查询的一些基础概念,接下来会展开详细讲述