【MySQL】内外连接

> 作者:დ旧言~
> 座右铭:松树千年终是朽,槿花一日自为荣。

> 目标:了解MySQL的内外连接。

> 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安!

> 专栏选自:带你玩转MySQL

> 望小伙伴们点赞👍收藏✨加关注哟💕💕

​​

一、前言

想必大家在学校也学习过MySQL,可能学的懵懵懂懂,这个板块我们从入门开始,从最新的安装MySQL到学习MySQL语句,一步一步开始,一切都是新的,新的板块新的开始,大家一起努力,一起进步!!!

 二主体

学习【MySQL】内外连接咱们按照下面的图解:

2.1内连接

概念:

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

语法:

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

举个栗子:一张员工表和一张部门表

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

方法一:使用前面的查询方式

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

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

方法二:使用标准内连接查询

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

2.2外连接

概念:

外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接,右侧的表完全显示就是右外连接。

2.2.1左外连接

概念:

左外连接:返回左表中的所有行以及右表中与左表匹配的行。如果没有匹配的行,右表的列将显示为 NULL。

语法:

select 字段名  from 表名1 left join 表名2 on 连接条件;

举个栗子:(先创建两张表,学生表和成绩表)

-- 建两张表
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);mysql> select * from stu;
+------+------+
| id   | name |
+------+------+
|    1 | jack |
|    2 | tom  |
|    3 | kity |
|    4 | nono |
+------+------+
4 rows in set (0.00 sec)mysql> select * from exam;
+------+-------+
| id   | grade |
+------+-------+
|    1 |    56 |
|    2 |    76 |
|   11 |     8 |
+------+-------+
3 rows in set (0.00 sec)

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

这时我们可以在连接学生表和成绩表时将学生表放在左侧,那么就可以使用左外连接,这时如果左侧表中的某条记录根据连接条件没有找到匹配的右侧表中的记录,就会直接显示左侧表中的记录信息,而其对应的右侧表中的列信息将会用NULL值进行填充。

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

2.2.2右外连接

概念:

右外连接:与左外连接相反,返回右表中的所有行以及左表中与右表匹配的行。如果没有匹配的行,左表的列将显示为 NULL。

语法:

select 字段 from 表名1 right join 表名2 on 连接条件;

举个栗子:

①查询所有的成绩,就算这个成绩没有学生与它对应,也要将学生成绩信息显示出来:

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

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

dept表左外连接emp表:

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

emp表右外连接dept表:

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

三、结束语 

       今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。

​​ 、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mono管理器的使用

介绍 Mono 管理器&#xff0c;用于集中管理和调度 Update、FixedUpdate、和 LateUpdate 方法中的逻辑。它继承自 SingletonAutoMono<MonoMgr>&#xff0c;即通过单例模式管理&#xff0c;使得项目中任何地方都可以使用该类提供的功能。 主要功能&#xff1a; 帧更新事件…

真别跟风,CISP认证只对这些人有用

CISP认证&#xff0c;作为信息安全领域的重要专业资格认证&#xff0c;受到了业界的广泛认可。 它不仅证明了持证者在信息安全方面的专业能力&#xff0c;也是许多企业和组织在招聘信息安全岗位时的重要参考标准。然而&#xff0c;CISP认证并非适合所有人。 虽然安全方向热度很…

ArkUI自定义Scroll滑动 指示器

最近项目中有个需求&#xff0c;关于滑动组件 Scroll 底部指示器跟随手势滑动等比例展示的效果&#xff0c;下图展示了要实现的效果。 自定义指示器组件 这里其实不是一个进度条&#xff0c;所以需要我们需要自定义绘制该组件&#xff0c;在鸿蒙中绘制组件单独使用&#xff0c…

九盾叉车高位显示器:重塑叉车视界,引领高位精准

在繁忙的物流与仓储中&#xff0c;叉车不仅是力量与效率的化身&#xff0c;更是精准与安全的守护者。九盾安防&#xff0c;以科技之名&#xff0c;打造叉车高位显示器&#xff0c;彻底革新了货叉升降的盲区挑战&#xff0c;为物流、仓储及码头等领域带来了前所未有的作业体验。…

arm架构ceph pacific部署

背景 合作伙伴实验室的华为私有云原来使用单点的nfs做为存储设备&#xff0c;现有两方面考量&#xff0c;业务需要使用oss了&#xff0c;k8s集群及其他机器也需要一套可扩展的分布式文件系统 部署ceph 初始机器配置规划 IP配置主机名Role10.17.3.144c8g1T数据盘ceph-node01…

2024java高频面试之JVM

说说 JVM 内存区域 程序计数器 是「程序控制流的指示器&#xff0c;循环&#xff0c;跳转&#xff0c;异常处理&#xff0c;线程的恢复等工作都需要依赖程序计数器去完成」。程序计数器是「线程私有」的&#xff0c;它的「生命周期是和线程保持一致」的&#xff0c;我们知道&a…

大模型落地实践:同花顺大模型技术应用及优化

这份完整版的大模型 LLM 学习资料已经上传CSDN&#xff0c;朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 众所周知&#xff0c;大模型参数量大&#xff0c;通用能力强&#xff0c;综合性能好。但在同花顺业务场景中最初使用大模型的时候&#xf…

Python数据分析工具OpenCV用法示例

Python数据分析工具OpenCV是一个强大的计算机视觉库&#xff0c;提供了丰富的图像处理算法和功能&#xff0c;支持多种编程语言&#xff0c;包括Python、C、C#等。以下是OpenCV在Python中的一些常见用法示例&#xff1a; 一、图像读取、显示与保存 读取图像 import cv2 im…

2024年制冷与空调设备安装修理证模拟考试题库及制冷与空调设备安装修理理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年制冷与空调设备安装修理证模拟考试题库及制冷与空调设备安装修理理论考试试题是由安全生产模拟考试一点通提供&#xff0c;制冷与空调设备安装修理证模拟考试题库是根据制冷与空调设备安装修理最新版教材&#…

2024年最新苹果iOS证书申请创建App详细图文流程

iOS 证书设置指南&#xff1a; 对于开发者来说&#xff0c;在没有Mac电脑或对Xcode等开发工具不熟悉的情况下&#xff0c;如何快速完成IOS证书制作和IPA文件提交至开发者中心一直是一个难题。但是现在&#xff0c;有了初雪云提供的极简工具&#xff0c;您可以轻松实现这两个任…

分布式数据库环境(HBase分布式数据库)的搭建与配置

分布式数据库环境&#xff08;HBase分布式数据库&#xff09;的搭建与配置 1. VMWare安装CentOS7.9.20091.1 下载 CentOS7.9.2009 映像文件1.2启动 VMware WorkstationPro&#xff0c;点击“创建新的虚拟机”1.3在新建虚拟机向导界面选择“典型&#xff08;推荐&#xff09;”1…

springBoot集成nacos注册中心以及配置中心

一、安装启动nacos 访问&#xff1a;http://127.0.0.1:8848/nacos/index.html#/login 二、工程集成nacos 1、引入依赖 我这里搭建的父子工程哈&#xff0c;在子工程引入 <dependencies><!-- SpringBoot Web --><dependency><groupId>org.sp…

【Golang】关于Gin框架请求参数的获取

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

基于springboot的网上服装购物商城系统

基于springboot的网上服装购物商城系统 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;idea 源码获取&#xff1a; &#x…

【conda环境打包】ubuntu的conda环境打包导出方法 conda-pack

【conda环境打包】ubuntu的conda环境打包导出方法 conda-pack 1.准备工作2.解压3.后续处理参考文献 1.准备工作 安装conda-pack pip install conda-pack激活要被打包的环境&#xff0c;打包环境之前 先激活要打包的环境 conda activate 被打包的环境打包命令 conda pack --…

Java 输入与输出(I\O)之字节缓冲流【BufferedInputStream】【BufferedOutputStream】详解

缓冲流是Java I/O中的一个重要概念&#xff0c;它可以提高文件读写的性能。 由于磁盘的IO处理速度远低于内存的读写速度。 为了提高文件读写性能&#xff0c;我们可以使用缓冲流。缓冲流使用内存缓冲区&#xff0c;可以一次性读取或写入大量数据&#xff0c;从而减少与磁盘的交…

将图片转换为PDF:Python初学者指南

前言 最近,我去进行了一次入职体检,第二天在体检医院的公众号中查看了体检报告。但遗憾的是,医院没有提供下载功能,而公司需要的是PDF格式的报告。市面上很多工具或软件都能将图片转换为PDF格式,但大多数都要求开会员,而我不常用这些工具,因此没必要为此花钱。出于囊中羞…

华为OD机试真题---关联子串

华为OD机试中的“关联子串”题目是一个考察字符串处理和算法理解的经典问题。以下是对该题目的详细解析&#xff1a; 一、题目描述 给定两个字符串str1 和 str2&#xff0c;如果字符串 str1 中的字符&#xff0c; 经过排列组合后的字符串中只要有一个是 str2 的子串&#xff…

oracle和hive之间关于sql的语法差异及转换

目录 前言 1、oracle中的&#xff08;&#xff09;写法 1.1、区分左右连接 1.2、hive中的写法 a、最常用 b、副表带条件 c、只显示过滤条件的数据 2、select中含有子查询 3、oracle的decode函数 4、oracle的时间转化 5、oracle的trunc函数 6、oracle instr函数 7…

vscode中每个打开的文件都显示在一个单独的标签页中

版本&#xff1a;1.94 实现步骤&#xff1a; 1、打开设置 File-》Preferences-》Settings 2、具体设置 2.1、在配置中搜索 workbench.editor.showTabs 设置为multiple。 2.2、在配置中搜索 workbench.editor.enablePreview 取消勾选。 根据这个功能的说明&#xff0c;在…