多表查询过滤重复数据_数据库SQLyog之多表查询

本文介绍了数据库中的多表查询方法,包括一对一、一对多、多对多的关系,以及如何使用UNION和UNION ALL合并结果集。通过示例详细解释了内连接、外连接、多表连接和自然连接的使用,以及如何利用子查询作为查询条件或数据源,以过滤和获取所需数据。
摘要由CSDN通过智能技术生成

创建表

我们先创建三个表,之后的查询均以这三个表为例

cdeea60619b92393a3c1c23dbfae0396.png


根据如图所示的字段及属性建立三张表,建立过程省略。注意sno,cno,在每张表中的格式要一致,就是我们所说的学号和课程号是固定的,一个学生只能有一个学号,一个课程只能有一个课程号。
插入后的数据格式如下(可以自行改变):
course:

2b08d1acc769a17cd647d197af146f48.png


score表:

d65ceb361a10a7a8b8bc7d61d8ef9034.png


student表:

14f31ff53cebe0862b1b0dbed57d748a.png

表和表之间的对应关系

  • 一对一
    在一对一关系中,关系表的每一边都只能存在一条记录,每个数据表中的关键字在 对应的关系表中只能存在一条记录或者没有对应的记录。这种关系类似于现实生活中配 偶的关系,如果一个人已经结婚,那么只有一个配偶,如果没有结婚,那么没有配偶。
    假设我们已经创建如图所示的两张表

3c14f4b09066a8de19ea9d399182f45a.png


从图6.1中可以看到,user表和user_text表是一对一的关系。此处使用一对一的意 义实际上是数据库优化,用户备注字段utext--般有比较多的文字,属于大文本字段,但 这个字段又不是每次都要用到,如果存放到user表中,在查询用户数据的时候会影响user表的查询效率,因此将utext字段单独拆分出来,放到从表中,当需要utext字段时 进行两张表的关联查询即可。

  • 一对多和多对一
    在一对多关系中,主键数据表中只能含有一个记录,而在其关系表中这条记录可以 与一个或者多个记录相关,也可以没有记录与之相关。这种关系类似于现实生活中父母 与子女的关系,每个孩子都有一个父亲,但一个父亲可能有多个孩子,也可能没有孩子。 多对一是从不同的角度来看问题,例如从孩子的角度来看,一个孩子只能有一个父亲, 多个孩子也可能是同一个父亲。
    假设创建如图所示的表:

bb37dc7df9974de3831998f88c6c9b59.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值