我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【MySQL系列】表的内连接和外连接学习

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【MySQL系列】表的内连接和外连接学习

「前言」文章内容大致是对MySQL表的内连接和外连接。

「归属专栏」MySQL

「主页链接」个人主页

「笔者」枫叶先生(fy)

MySQL

一、内连接

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,前面篇章学习的查询都是内连
接,也是在开发过程中使用的最多的连接查询

内连接语法如下:

SELECT ... FROM t1 INNER JOIN t2 ON 连接条件 [INNER JOIN t3 ON 连接条件] ... AND 其他条件;

说明:

  • 大写的表示关键字,[ ]中代表的是可选项
  • 内连接的条件通过连接条件指明,用户的其他筛选条件通过其他条件指明

显示SMITH的名字和部门名称

按照之前的做法就是,取员工表和部门表的笛卡尔积,在where子句中指明筛选条件为员工的部门号等于部门的部门号,筛选出每个员工匹配的部门信息,并指明员工姓名为SMITH

mysql> select ename, dname from emp, dept    -> where emp.deptno = dept.deptno and ename='SMITH';

在这里插入图片描述
上述多表查询的方式本质就是内连接,下面使用标准的内连接SQL编写(写法不同而已):

  • 将员工表和部门号放在from子句中并通过inner join关键字隔开
  • on子句后指明内连接的条件为员工的部门号等于部门的部门号,保证筛选出来的数据是有意义的
  • and之后指明筛选条件为员工的姓名为SMITH
mysql> select ename, dname from emp inner join dept     -> on emp.deptno = dept.deptno and ename='SMITH';

在这里插入图片描述

二、外连接

外连接又分为左外连接和右外连接

2.1 左外连接

如果进行联合查询,左侧的表完全显示我们就说是左外连接,而右侧的数据不完全显示或者为NULL

语法如下:

SELECT ... FROM t1 LEFT JOIN t2 ON 连接条件 [LEFT JOIN t3 ON 连接条件] ... AND 其他条件;

说明:

  • 写的表示关键字,[ ]中代表的是可选项
  • 左外连接的条件通过连接条件指明,用户的其他筛选条件通过其他条件指明

例如,创建两张表

-- 建两张表create table stu (id int, name varchar(30)); -- 学生表insert into stu values(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');create table exam (id int, grade int); -- 成绩表insert into exam values(1, 56),(2,76),(11, 8);

在这里插入图片描述

查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来

题目要求将没有成绩的学生的个人信息也要显示出来,也就是说学生表当中的内容需要完全被显示出来。

如果在连接学生表和成绩表时将学生表放在左侧,那么就可以使用左外连接

如果左侧表中的某条记录根据连接条件没有找到匹配的右侧表中的记录,其对应的右侧表中的列信息将会用NULL值进行填充

mysql> select * from stu left join exam on stu.id=exam.id;

在这里插入图片描述

2.2 右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接,而左侧的数据不完全显示或者为NULL

语法如下:

SELECT ... FROM t1 RIGHT JOIN t2 ON 连接条件 [RIGHT JOIN t3 ON 连接条件] ... AND 其他条件;

说明:

  • 大写的表示关键字,[ ]中代表的是可选项
  • 右外连接的条件通过连接条件指明,用户的其他筛选条件通过其他条件指明

对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来

题目要求将没有学生与它对应的成绩信息也要显示出来,也就是成绩表当中的内容需要完全被显示出来

如果在连接学生表和成绩表时将成绩表放在右侧,那么就可以使用右外连接

右侧表中的某条记录根据连接条件没有找到匹配的左侧表中的记录,而其对应的左侧表中的信息将会用NULL值进行填充

mysql> select * from stu right join exam on stu.id=exam.id;

在这里插入图片描述

练习:列出部门名称和这些部门的员工信息,同时列出没有员工的部门

使用的是雇员信息的数据库
在这里插入图片描述

题目要求同时列出部门名和员工信息,因此需要将部门表和员工表连接起来

题目要求同时列出没有员工的部门,也就是部门表当中的内容需要完全被显示出来,如果在连接部门表和员工表时将部门表放在左侧,那么就可以使用左外连接

mysql> select dname, emp.* from dept left join emp on dept.deptno=emp.deptno;

在这里插入图片描述
也可以右外连接进行操作,右外连接就是显示完全右边的表,即部门表

mysql> select dname, emp.* from emp right join dept on dept.deptno=emp.deptno;

在这里插入图片描述
--------------------- END ----------------------

「 作者 」 枫叶先生「 更新 」 2023.8.26「 声明 」 余之才疏学浅,故所撰文疏漏难免,          或有谬误或不准确之处,敬请读者批评指正。

来源地址:https://blog.csdn.net/m0_64280701/article/details/132502524

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【MySQL系列】表的内连接和外连接学习

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【MySQL系列】表的内连接和外连接学习

「前言」文章内容大致是对MySQL表的内连接和外连接。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、内连接二、外连接2.1 左外连接2.2 右外连接 一、内连接 内连接实际
2023-08-30

[学习笔记] Oracle集合运算、内连接、外连接、伪列

集合运算INTERSECT(交集),返回两个查询共有的记录。UNION ALL(并集重复),返回各个查询的所有记录,包括重复记录。UNION(并集不重复),返回各个查询的所有记录,不包括重复记录 。MINUS(补集),返回第一个查询的记录减去第二个查询的记录之
[学习笔记] Oracle集合运算、内连接、外连接、伪列
2020-10-07

详解MySQL的内连接和外连接

mysql 中的内连接、左外连接和右外连接是用于连接两个或多个表的不同方式,它们之间的区别如下:内连接(Inner Join):内连接也称为等值连接,只返回两个表中键值匹配的行,即只有在两个表中都有匹配的数据时才会返回。内连接的语法如下
2023-05-06

MySQL中的连接操作:内连接、外连接和交叉连接详解

MySQL中的连接操作:内连接、外连接和交叉连接详解在MySQL数据库中,连接操作是一种常用的操作技术,用于将两个或多个表中的数据按照一定的条件进行合并。连接操作可以帮助我们处理复杂的数据查询和分析需求。在MySQL中,我们通常使用内连接、
2023-10-22

MySQL表的内外连接和视图使用实战练习

MySQL内外连接和视图实战本文详细讲解了MySQL表的内外连接和视图的使用技巧,并辅以实战练习加以说明。内连接:将两个表中的具有相同列值的记录合并。外连接:在内连接的基础上,左外连接会返回所有左表记录(即使右表没有关联记录),而右外连接会返回所有右表记录(即使左表没有关联记录)。视图:基于一个或多个表创建的虚拟表,可以隐藏底层表的复杂性,提高查询性能和数据安全性。实战练习:使用内连接或视图查询订单中数量大于5的所有产品的名称和供应商名称。
MySQL表的内外连接和视图使用实战练习
2024-04-02

MySQL的内连接和外连接有什么区别

MySQL的内连接和外连接是两种不同的查询方式。内连接(INNER JOIN)是根据两个表之间的共同字段进行连接,并返回满足条件的行。内连接只返回两个表中匹配的行,即只返回两个表中都存在的数据。外连接(OUTER JOIN)是根据两个表
MySQL的内连接和外连接有什么区别
2024-04-09

MySQL内连接和外连接及七种SQLJOINS的实现

这篇文章主要介绍了Mysql内连接和外连接的区别以及七种SQLJoins的实现,相信看完这篇文章你对SQL内外连接的多表查询就足够理解了,需要的朋友可以参考下
2023-03-23

MySQL总结(十)表连接查询(内、外连接)-详解

表连接查询1.什么是多表查询准备数据# 创建部门表create table dept( id int primary key auto_increment, name varchar(20))insert into dept (name) values (
MySQL总结(十)表连接查询(内、外连接)-详解
2020-11-18

SQL中内连接和外连接的区别

在这篇文章中,我们将了解 SQL 中内连接和外连接的区别。内连接子句使用的是“INNER JOIN”和“JOIN”。它返回两个或多个表的组合元组。当没有共同属性时,结果为空。如果元组数量较多,则“INNER JOIN”比“OUTER”工作得
2023-10-22

oracle中内连接和外连接的区别

oracle 中的连接类型分为内连接和外连接。内连接仅返回匹配行的结果,而外连接返回匹配行和仅出现在一个表中的行。外连接有三种类型:左外连接(返回左侧表所有行)、右外连接(返回右侧表所有行)、全外连接(返回两侧表所有行)。内连接的特点是匹配
oracle中内连接和外连接的区别
2024-04-30

MySQL内连接和外连接及七种SQL JOINS的实现

目录1. 内连接2.外连接左外连接:右外连接:满外连接:3. SQL99语法实现多表查询3.1 SQL99实现内连接3.2 SQL99语法实现外连接3.2.1 左外连接3.2.2 右外连接3.2.3 满外连接4.总结:七种SQL JOINS
2023-03-23

Mysql内连接与外连接的区别详解

目录前言内连接inner join外连接outer join左(外)连接 left join右(外)连接 right join总结前言我在写sql查询的时候,用的最多的就是where条件查询,这种查询也叫内连查询inner join,当然
2023-01-28

mysql中内连接,左连接和右连接的区别

mysql 中内连接、左连接和右连接的区别在于:内连接只返回同时在两个表中匹配的行,而左连接返回左表所有行,包含匹配右表行,右连接返回右表所有行,包含匹配左表行。内连接语法:select * from table1 inner join t
mysql中内连接,左连接和右连接的区别
2024-04-29

MySQL表内连和外连的具体使用

目录一. 内连接二. 外连接1. 左外连接2. 右外连接一. 内连接利用where子句对两种表形成的笛卡尔积进行筛选,其实就是内连接的一种方式另一种方式是inner joinselect 字段 from 表1 inner join 表2
2023-10-18

编程热搜

目录