当前位置: 首页 > news >正文

MySQL内外连接

MySQL内外链接

  • 内连接
    • 显示SMITH的名字和部门名称
  • 外连接
    • 左外连接
      • 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
    • 右外连接
      • 把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来
      • 列出部门名称和这些部门的员工信息,同时列出没有员工的部门

内连接

什么是内连接:
在以前我们直接利用from子句对多个表做笛卡尔积的时候,MySQL会无脑的将一张表中的每一条数据与另一张表中的所有数据进行连接,然后形成一张新表,然后再由我们自己利用where子句筛选出有意义的数据,这实际上是内连接的一种,而实际上我们可以在连接的时候让MySQL不要无脑连接,可以让MySQL将满足条件的数据连接起来,这样的话我们就得到了一张有意义的表,我们就不用自己在where子句中进行筛选了,这也是内连接的一种,如果某个表中没有与另一个表匹配的数据,那么该表的数据将不会出现在结果集中。这样做的语法如下:
select 字段 from table1 inner join table2 on 连接条件;

显示SMITH的名字和部门名称

分析:
方法一:
首先我们要的数据来自于emp表和dept表,那么我们可以对这两个表做笛卡尔积,然后筛选出有意义的数据,并且ename=’SMITH‘的数据;
SQL语句:
select ename,dname from emp,dept where emp.deptno<=>dept.deptno and ename='SMITH';
在这里插入图片描述
这里是利用了前面学习的多表查询的方式,这也是内连接的一种;

方法二:
根据我们上述学的新知识,我们在连接的时候就可以按照条件连接,然后再筛选出ename=“SMITH”的数据;
SQL语句:
select ename,dname from emp inner join dept on emp.deptno<=>dept.deptno where ename="SMITH" ;
在这里插入图片描述
实际上我们也可以在连接条件里面加上ename='SMITH’这一个条件:
select ename,dname from emp inner join dept on emp.deptno<=>dept.deptno and ename='SMITH';
在这里插入图片描述
这样写的话我们就不用在where子句中进行筛选了,但是我们不建议这样写因为这种写法逻辑上没有使用where子句的写法清晰,使用where子句的写法更符合我们的编码逻辑;

外连接

在MySQL中外连接分为左外连接和右外连接
什么是外连接:
在内链接中某个表的数据与另一个表的数据在连接的时候没有匹配的数据,那么这个表中的数据是不会出现在结果集中的,但是在外连接中不是这样的,在外连接中如果某个表的数据在另一个表中没有满足条件的连接,那么这个表中的数据依然会存在与最后的结果集中,尽管其在另一个表中没有与之匹配的数据;
因此对于左外连接来说:就是在最后的结果中会显示左表中的全部数据,尽管左表中的数据在右表中没有与之匹配数数据;
对于右外连接同理:就是在最后的结果中会显示右表中的全部数据,尽管右表中的数据在左表中没有与之匹配数数据;

//创建两张表
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);

在这里插入图片描述

左外连接

语法:
select 字段 from table1 left join table2 on 连接条件;
这里我们解释一下那个是左表,那个是右表:
table1是左表,table2是右表,从编码顺序上来区分的;

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

分析:
最后要求我们查询的数据来自stu表、exam表 因此我们肯定需要多表查询,然后的话我们又要我们显示所有学生的成绩,尽管这个学生在exam表中没有成绩,那么我们就可以将stu当作左表,exam当作右表进行左外连接;
SQL语句:select stu.id,name,grade from stu left join exam on stu.id<=>exam.id;
在这里插入图片描述

右外连接

语法:
select 字段 from table1 right table2 on 连接条件;

把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来

分析:
最后要求的信息有成绩、学生姓名,学生id,然后这两个信息分别来自exam表、stu表,因此我们肯定是需要做联合查询的,这个没话说,然后的话又要我们显示所有成绩,即该成绩在学生表中没有学生与之对应,那么我们可以将exam表当作右表来进行右连接:
SQL语句:
select exam.id,name,grade from stu right join exam on exam.id<=>stu.id;
在这里插入图片描述
实际上利用左外连接查询也是可以的,将exam当左表:
SQL语句:
select exam.id,name,grade from exam left join stu on exam.id<=>stu.id;
在这里插入图片描述

实际上:还有一个全外连接的,全外连接就是左外连接与右外连接的结合,左表中的数据和右表中的数据会全部显示在最后的结果集中;
但是MySQL还没有支持全外连接,只有左外连接、右外连接;

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

分析:
最后需要我们显示的有部门名、以及员工信息,那么我们需要的数据来自于dept表、emp表我们需要对这两张表做联合查询,同时题目要求我们显示所有部门,即使这个部门没有员工,那么我们就可以让dept表充当左表,然后以左外连接的方式来进行数据连接筛选:
SQL语句:
select dname,emp.* from dept left join emp on dept.deptno<=>emp.deptno;
在这里插入图片描述
右外连接与内连接的写法读者可以自行尝试一下;

相关文章:

MySQL内外连接

MySQL内外链接 内连接显示SMITH的名字和部门名称 外连接左外连接查询所有学生的成绩&#xff0c;如果这个学生没有成绩&#xff0c;也要将学生的个人信息显示出来 右外连接把所有的成绩都显示出来&#xff0c;即使这个成绩没有学生与它对应&#xff0c;也要显示出来列出部门名称…...

sql:SQL优化知识点记录(十四)

&#xff08;1&#xff09;索引失效行锁变表锁 建立2个索引 索引是失效后&#xff0c;系统性能会变查&#xff0c;如果涉及到锁的话&#xff0c;行锁会变表锁 有一个问题&#xff0c;当session1用b字段做查询条件因为是varchar类型&#xff0c;需要加双引号&#xff0c;但是没…...

什么是IIFE(Immediately Invoked Function Expression)?它有什么作用?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐IIFE 的基本语法⭐IIFE 的主要作用⭐如何使用 IIFE 来创建私有变量和模块封装⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅…...

Codeforces Round 866 (Div 2)(A - D)

Codeforces Round 866 (Div. 2)(A - D) Dashboard - Codeforces Round 866 (Div. 2) - Codeforces A. Yura’s New Name&#xff08;思维&#xff09; 思路&#xff1a;枚举每个下划线 &#xff0c; 计算其前后需要补齐的 ‘^’ 个数 &#xff0c; 注意特判样例四的特殊情况…...

QTday3(QT实现文件对话框保存操作、实现键盘触发事件【WASD控制小球的移动】)

1.实现文件对话框保存操作 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }void Widget::on_fontBtn_clicked() {//调用QFo…...

WPF基础入门-Class8-资源基础

WPF基础入门 Class8-资源基础 前言&#xff1a;方便各种资源的集中管理和动态效果 静态引用&#xff1a;初始化的时候确定样式&#xff0c;后续不发生改变 动态引用&#xff1a;样式随着引用的内容一起改变 1、新建资源字典.xaml&#xff0c;创建一个边框颜色资源MyBrush和一…...

Axure RP PC电商平台Web端交互原型模板

Axure RP PC电商平台Web端交互原型模板。原型图内容齐全&#xff0c;包含了用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 在设计尺寸方面&#xff0c;本套模板按照主流的…...

Ubuntu目录和linux内核文件用途

一&#xff0c;目录&#xff1a; 1./:根目录&#xff0c;是整个文件系统的起点 2./bin:binary 二进制可执行文件目录&#xff0c;包含用于系统启动和运行的基本命令 3./boot: 启动加载器目录&#xff0c;包含用于系统启动的内核和引导程序文件。 4./dev: device 设备文件目录&a…...

更快更强更稳定:腾讯向量数据库测评

向量数据库&#xff1a;AI时代的新基座 人工智能在无处不在影响着我们的生活&#xff0c;而人工智能飞速发展的背后是需要对越来越多的海量数据处理&#xff0c;传统数据库已经难以支撑大规模的复杂数据处理。特别是大模型的出现&#xff0c;向量数据库横空出世。NVIDIA CEO黄…...

【java web】JSP-Java Server Page

前言 这个框架我用得不多&#xff0c;感觉和python的django一样&#xff0c;前后端结合太紧密了&#xff0c;适合个人开发 get 明文请求&#xff0c;可以被直接收藏 post 密文请求 JSP Java Server Page&#xff08;JSP&#xff09;HTMLJava code 步骤&#xff1a; 1.…...

java文件命令行报错: 找不到或无法加载主类XXX报错及解决

前言 之前遇到过几次&#xff0c;后面稀里糊涂的解决了。今天详细记录一下&#xff0c;可能不全或有些错误&#xff0c;还请各位指正。 你要启动一个类的话首先要有类。 在这里&#xff0c;类有两种&#xff0c; 一个是带包名&#xff08;package&#xff09;的还有一个是没包…...

算法训练营day46|动态规划 part08:完全背包 (LeetCode 139. 单词拆分)

139. 单词拆分 (求排列方法) 题目链接&#x1f525;&#x1f525; 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没…...

Java网络编程(二)Socket 套接字(TCP和UDP),以及TCP的回显

Socket 套接字&#xff08;TCP和UDP&#xff09;&#xff0c;以及TCP的回显 Socket 套接字数据报套接字UDPTCP流套接字编程TCP的长短连接实现一个简单回显服务器 Socket 套接字 我们软件工作者&#xff0c;着重编写的是应用层的代码&#xff0c;但是发送这个数据&#xff0c;我…...

C++ - 多态语法 - 虚函数使用介绍

多态简单介绍 多态就是多种形态&#xff0c;是不同的对象去完成同一个动作所产生的结果可能有多种。这种多种的形态我们称之为多态。 比如&#xff1a;我们在买票的时候的时候&#xff0c;可能有成人全价&#xff0c;儿童半价&#xff0c;军人免票等等。对于成人&#xff0c;儿…...

php获取客户端ip地址及ip所在国家、省份、城市、县区

摘要 获取客户端ip地址&#xff0c;然后使用这个ip地址获取所在的国家、省份、城市&#xff0c;可以在网站中实现IP属地&#xff0c;发布地等功能。 本文的获取IP地址信息均采自网络上免费的IP查询网站&#xff0c;通过其API或者网页HTML解析出的ip地址信息。 代码 <?p…...

Error: Port Library failed to initialize: -86

最近遇到一个很奇怪的错误&#xff0c;这里记录一下&#xff0c;以备以后再次遇到 Error: Port Library failed to initialize: -86 Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.背景是&#xff0c;就是一普…...

SOME/IP 支持两种序列化方式:TLV 和 TV

SOME/IP 是一种基于 IP 的可扩展面向服务的中间件协议,它可以在车载以太网中实现 ECU 之间的高效通信和互操作性。 SOME/IP 的序列化方式是指将数据结构或对象按照一定的规则转换成字节序列的过程,以便在网络中传输和解析。 SOME/IP 支持两种序列化方式:TLV 和 TV。 TLV是…...

Unity之3D物理导航系统

一 介绍 Unity自带寻路(导航)系统是unity官方自带的一种寻路系统。我们可以通过它来制作简单的寻路&#xff0c;比如可以制作点击某个位置&#xff0c;让角色自动的绕开障碍走到目标点的效果&#xff0c;比如可以制作敌人AI&#xff0c;让它可以通过NavMesh绕开障碍追击我方单…...

9.4黄金行情是否反转?今日多空如何布局?

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周一(9月4日)亚市盘中&#xff0c;现货黄金震荡走高&#xff0c;延续上周涨势&#xff0c;一度刷新日内高点至1946.16美元/盎司。周三&#xff0c;ISM将发布服务业P…...

Win10下使用vim9

作为一个经常与文字打交道的Writer&#xff0c;你在学会Vim的基本操作之后&#xff0c;就一定会爱上Vim的。 以下是Windows10_64位&#xff08;专业版&#xff09;环境中安装、使用Vim9的全过程&#xff0c;分享一下&#xff1a; 一、下载、安装Vim9 去Vim官网去下载最新的Vi…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...