一文帮你搞懂sql的连接查询 您所在的位置:网站首页 ecu数据读取方式有哪几种方式 一文帮你搞懂sql的连接查询

一文帮你搞懂sql的连接查询

2023-05-17 16:24| 来源: 网络整理| 查看: 265

我们在工作中经常会用到数据库的操作,很多操作都会用到多表联查,那么你肯定会用到连接查询,那我们如何掌握连接查询呢?连接查询都有哪些呢?

 连接查询的分类

连接查询中我们经常用到的有这几种等值连接,内连接和外连接,外连接又分为左外连接和右外连接,全外连接(mysql不支持),我们主要介绍其他几种

 如何理解

我们如何理解连接查询呢?首先要理解为什么进行多表联查,当我们的数据库关系比较复杂时,经常需要在多个表之间进行数据查询,多个表之间一般都有外键来约束连接,要想理解连接查询,必须先清楚表的连接规则,首先第一个要理解的概念就是

笛卡尔积:

数学中,笛卡尔积就是第一个数列的所有值与第二个数列的所有值都相乘一遍,所得到的积,比如

1 2 3 A b c

那么1与a,b,c分别相乘,2与a,b,c分别相乘,3与a,b,c分别相乘,最后相加。

其实也很好理解,就是说你的元素跟我的元素都必须组合一次。那么在多个表之间连接的时候,是怎么进行的呢?

比如下面的两张表,员工表和部门表

他们的笛卡尔积的结果就是:

图比较大,值截取了一部分,先介绍一下两种表的关系,员工表emp里面主要存储了员工信息,部门表里面主要存储了部门信息,连接列是部门编号,就是deptno,那么两张表连接以后对我们来说,哪些是有效数据呢?

从数据的角度我们可以知道,只有当两个表的连接列相等时,这个数据才是有意义的,所以我们在笛卡尔积上加上连接条件,得到下图:

这就是所有连接查询结果的起点,因为所有的有效数据都来自这个连接结果。

其中可以看到员工数据与其对应的部门信息通过连接列完美的连接在了一起,你就可以在这个结果中取出自己想要的结果了,比如员工ward的工作部门名字和工作地。

 如何使用

这一部分我们介绍如何使用连接查询,我们用最简单的例子来说明,比如想查出所有员工名字和他的部门名字,我们都知道员工名字在第一张emp表中,而员工的部门名字在第二张dept中,所以这个就需要连接查询。我们可以使用不同的几种方式来完成。

第一种:等值连接,注意必须加连接列的条件,为了方便,可以将表面简写

mysql> select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;

如下:

第二种:内连接 inner join,来看写法:

mysql> select e.ename,d.dname from emp e inner join dept d on e.deptno=d.deptno;

第三种,左外连接 left join,来看写法:

mysql> select e.ename,d.dname from emp e left join dept d on e.deptno=d.deptno;

注意看,这个结果跟上面的有区别,这就是左外和上面的区别,除了查出所有符合连接的结果外,如果左表中有多余数据,会让其显示与null结合,这就是为什么叫左外的原因。

第四种:右外连接  right join 来看写法:

mysql> select e.ename,d.dname from emp e right join dept d on e.deptno=d.deptno;

注意看,这个与上面几个结果也有区别,右外除了显示匹配成功的元素外,还会显示右表中每匹配上的元素,这就是叫右外的原因。

好了,上面给大家介绍了sql中的连接查询,如果想连接更多测试技术知识,请关注公众号:软件测试藏经阁,那里有海量技术知识与你分享,谢谢。

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

全套资料获取方式:

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有