打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【SQL入门系列】关联查询-内连接
userphoto

2018.11.30

关注

什么是关联查询?

关联查询就是将一张表的每一行数据,跟另一张表的某一行数据(具体要看我们写SQL时指定的条件),组合成新的一行数据,这行新的数据包含了两张表的所有字段。然后再根据业务需要只展示部分字段,从而实现将两张表的数据组合成新报表。


关联查询从大类上又分为:内连接、外连接,我们今天从内连接开始介绍。


为什么要使用关联查询呢?

假如有两张表:钥匙表(t_keys)、锁头表(t_locks),他们的齿数据相同时,可以打开锁。钥匙表里有3条数据(3把钥匙),锁头表里有4条数据(4把锁头),如下:

统计一个报表,找出所有可以开锁的组合,并展示两个字段:钥匙颜色、锁头品牌。上面的情况,如果让我们人工处理,相信我们都能完成这项工作,但计算机数据库是如何实现的呢?


首先,计算机会将3把钥匙和4把锁,全部排列组合一遍(就好比我们用每一把钥匙去试每把锁一样)。共有12种组合(3 x 4)。组合出来的数据就是:A-1、A-2、A-3、A-4、B-1、B-2...如下图

(这种组合也称之为笛卡尔积)


然后在这12种组合中,找出那些可以开锁的组合(即钥匙的齿与锁的槽相匹配),然后用笔记下来,根据上面的2张表的数据可以得出下面3种组合可以正常开锁:

A-2

B-1

C-3 

 

整个过程中2个重要的环节:

  1. 两组数据(两张表,把每行作为一个单位)排列组合成所有可能

  2. 从这些排列组合中,筛选出我们需要的组合

那么所谓的关联查询,其实就是我们可以通过SQL脚本命令数据库替我们实现这个过程,即:先把两张表的数据按照类似上面的方式在数据库内部进行排列组合,然后从组合的结果中找到我们需要的(有用的)数据。


根据上面2个重要环节得出关联查询(内连接)的语法:

  1. 两张表的数据做排列组合:

    [表A] inner join [表B]

  2. 从上面组合好的数据中,筛选出需要的数据:

    on <条件>

将两者拼起来就变成:

t_keys k inner join t_locks l on k.serration = l.serration

上面的'k'和'l'是在这条SQL脚本中,分别给钥匙表和锁头表起了2个别名,别名的用法就是本节的作业,各位自行学习一下,很简单:)


再把这一部分放到from后面,一个完整的内连接查询,就写好了:

select k.color, l.brand from t_keys k inner join t_locks l on k.serration = l.serration;


上面的SQL中,如果没有后面的on k.serration = l.serration,那么结果就是12条数据;然而加上这个on...,结果就是3条数据,细心的你会发现其中缺少4号锁头的数据,那是因为没有钥匙与之匹配,数据库在关联的时候便忽略的这条数据。要想解决这个问题,我们需要用到下一节将要介绍的外连接:) 


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
OBD不支持的奔驰W215/W220全丢如何配置新钥匙?
left join 和 left outer join 的区别
mysql中的内连接,外连接实例详解
跨多个表格的数据进行组合的SQL语法
Sql连接查询和联合查询
数据库JOIN原理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服