Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL表的内外连接

MySQL表的内外连接

作者头像
每天都要进步呀
发布于 2023-10-16 03:17:44
发布于 2023-10-16 03:17:44
47100
代码可运行
举报
文章被收录于专栏:C++/LinuxC++/Linux
运行总次数:0
代码可运行

表的连接分为内连和外连。

一.内连接

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。而使用where进行笛卡尔积筛选的时候,后面必须跟着一个过滤条件,将不合理的数据筛选掉,并且这时候再跟着其他条件就需要and其他条件,所以这种方式的内连接虽然可以,但是容易将内连接的条件与其他约束条件混淆,不容易区分。

于是,为了能够特殊标注其是内连接,就采用了如下语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

案例:显示SMITH的名字和部门名称

这时,我们可以用多表查询,并笛卡尔积方式连接,并进行筛选:

采用内连接的方式:

采用内连接的方式,就可以很好的将内连接的条件与其他条件进行区分。

二.外连接

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

1. 左外连接

如果联合查询,左侧的表完全显示我们就说是左外连接。即有可能出现这样的情况:学生表里有四个人,但成绩表中只有三个成绩,这种情况还是常见的,因为存在着部分学生没有考试的情况,但是此时我们仍想将已知的信息显示出来,那么在连接时就会出现空值的情况。

即将学生表放在左侧,成绩表放在右侧,此时左侧的表完全显示,右侧的表由于缺少对应的一条信息,其内部的值为空。语法与内连接的区别就是将inner替换成了left。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 字段名  from 表名1 left join 表名2 on 连接条件

案例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 建两张表
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);

由于其中一个id无法匹配,所以该学生没有对应的成绩。如果将stu与exam的位置反过来,则会显示exam的全部信息,然后将stu能匹配上的属于与exam进行匹配。

2. 右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接。这与左外连接的规则是一样的,只不过主导的表变成了右侧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 字段名  from 表名1 right join 表名2 on 连接条件

实际上,只有一个左外连接已经够了,因为我们可以将表的位置交换,这与右外连接没什么区别。

三.案例

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

通过观察,emp表中不存在部门号为40的员工。从上面要求:同时列出没有员工的部门可以看出,部门为主,因此若选择左外连接,部门表在左侧;选择右外连接,部门表在右侧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from dept left join emp on dept.deptno=emp.deptno order by dept.deptno;

这就统计出来了我们想要的结果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【MySql】表的内连接和外连接
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。
平凡的人1
2023/10/15
6960
【MySql】表的内连接和外连接
【MySQL】表的内外连接和视图
内连接实际上就是利用 where 子句对两种表形成的笛卡尔积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。
YoungMLet
2024/03/01
4190
【MySQL】表的内外连接和视图
【MySQL】九、表的内外连接
​ 在 mysql 中,内连接(inner join)和外连接(left jon、right join 和 full join)是用于将多个表中的数据进行关联的操作。
利刃大大
2025/05/22
830
MySQL中的内连接与外连接详解:基础与进阶应用
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。
用户11286421
2025/03/28
2690
MySQL中的内连接与外连接详解:基础与进阶应用
【MySQL】函数 & 复合查询 & 内外连接
【案例】:基于我们上面 Retrieve 那建的表 exam_result,同样这里只写指令,不写结果
IsLand1314
2025/05/23
1450
【MySQL】函数 & 复合查询 & 内外连接
MYSQL数据库-内外连接
MYSQL数据库-内外连接 零、前言 表的连接 一、内连接 二、外连接 1、左外连接 2、右外连接 零、前言 本章主要讲解学习MYSQL数据库中的表的内连和外连 表的连接 表的连接分为内连和外连 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询 语法: select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件; 示例:显示SMITH的名字和部门名称 二
用户9645905
2022/12/11
6290
MYSQL数据库-内外连接
MySQL复合查询全解析:从基础到多表关联与高级技巧
这里‘J_’和‘J%’的主要区别在于它们所代表的字符串匹配模式的严格程度和范围。‘J_’更为严格,只匹配特定长度的字符串;而‘J%’则更为灵活,能匹配任意长度的字符串(只要以‘J’开头)。 
用户11316056
2025/05/05
1130
MySQL复合查询全解析:从基础到多表关联与高级技巧
Linux——MySQL内置函数与复合查询
就是按照当前时间减去两分钟查看表中是否有时间是否符合。也就是筛选表中时间+两分钟是否大于现在时间。
有礼貌的灰绅士
2025/05/12
900
Linux——MySQL内置函数与复合查询
MySQL 表连接(内连接与外连接)
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。
猫咪-9527
2025/03/28
3960
MySQL 表连接(内连接与外连接)
MySQL 多表查询
多表查询是指基于两个和两个以上的表查询.在实际应用中,查询单个表可能不能满足你的需求.
用户9615083
2022/12/25
4.3K0
MySQL 多表查询
初识MySQL · 复合查询(内外连接)
在前文我们学习了MySQL的基本查询,就是简单的套用了select语句,最多不过是加上了一些聚合函数,使用了group by或者是having等。
_lazy
2025/04/11
1790
初识MySQL · 复合查询(内外连接)
带你学MySQL系列 | 多表连接查询的92语法和99语法,你都知道吗?
前面两天带着大家换了一个口味,带着大家学习了pyecharts的原理和部分图形制作。今天我们继续回归带你学MySQL系列,带着大家继续学习MySQL数据库。
数据分析与统计学之美
2021/11/25
1.2K0
MySQL表的增删查改(二)
创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id:
海盗船长
2020/08/27
2.6K0
Oracle函数学习(多表联合查询)
–当需要获取的数据分布在多张中,考虑使用联合查询 –SQL92方式 –SQL99方式
葆宁
2019/04/19
1.1K0
sql语言总结合集
关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。
全栈程序员站长
2021/12/23
7040
MySQL数据篇之多表操作-----保姆级教程
向刚才做的这两个操作(插入一个没有部门的员工和删除一个带有员工的部门),这种情况都是不应该发生的。
大忽悠爱学习
2021/11/15
1.3K0
day05_MySQL学习笔记_02
    注:每个表中至少要有一个主键。 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。 
黑泽君
2018/10/11
2.3K0
day05_MySQL学习笔记_02
SQL语法(五) 多表联合查询
当需要获取的数据分布在多张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99)
全栈程序员站长
2022/07/01
3.1K0
SQL语法(五) 多表联合查询
Oracle连接查询,彻底搞懂外连接(左外连接&右外连接)
接下的例子以departments_v、employees_v两个视图数据为例(4条部门数据,9条人员数据)
全栈程序员站长
2022/08/22
5.2K0
Oracle连接查询,彻底搞懂外连接(左外连接&右外连接)
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT 。
.29.
2023/11/16
9490
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
相关推荐
【MySql】表的内连接和外连接
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验