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的名字和部门名称 外连接左外连接查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来 右外连接把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来列出部门名称…...
sql:SQL优化知识点记录(十四)
(1)索引失效行锁变表锁 建立2个索引 索引是失效后,系统性能会变查,如果涉及到锁的话,行锁会变表锁 有一个问题,当session1用b字段做查询条件因为是varchar类型,需要加双引号,但是没…...
什么是IIFE(Immediately Invoked Function Expression)?它有什么作用?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐IIFE 的基本语法⭐IIFE 的主要作用⭐如何使用 IIFE 来创建私有变量和模块封装⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索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(思维) 思路:枚举每个下划线 , 计算其前后需要补齐的 ‘^’ 个数 , 注意特判样例四的特殊情况…...
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-资源基础 前言:方便各种资源的集中管理和动态效果 静态引用:初始化的时候确定样式,后续不发生改变 动态引用:样式随着引用的内容一起改变 1、新建资源字典.xaml,创建一个边框颜色资源MyBrush和一…...
Axure RP PC电商平台Web端交互原型模板
Axure RP PC电商平台Web端交互原型模板。原型图内容齐全,包含了用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 在设计尺寸方面,本套模板按照主流的…...
Ubuntu目录和linux内核文件用途
一,目录: 1./:根目录,是整个文件系统的起点 2./bin:binary 二进制可执行文件目录,包含用于系统启动和运行的基本命令 3./boot: 启动加载器目录,包含用于系统启动的内核和引导程序文件。 4./dev: device 设备文件目录&a…...
更快更强更稳定:腾讯向量数据库测评
向量数据库:AI时代的新基座 人工智能在无处不在影响着我们的生活,而人工智能飞速发展的背后是需要对越来越多的海量数据处理,传统数据库已经难以支撑大规模的复杂数据处理。特别是大模型的出现,向量数据库横空出世。NVIDIA CEO黄…...
【java web】JSP-Java Server Page
前言 这个框架我用得不多,感觉和python的django一样,前后端结合太紧密了,适合个人开发 get 明文请求,可以被直接收藏 post 密文请求 JSP Java Server Page(JSP)HTMLJava code 步骤: 1.…...
java文件命令行报错: 找不到或无法加载主类XXX报错及解决
前言 之前遇到过几次,后面稀里糊涂的解决了。今天详细记录一下,可能不全或有些错误,还请各位指正。 你要启动一个类的话首先要有类。 在这里,类有两种, 一个是带包名(package)的还有一个是没包…...
算法训练营day46|动态规划 part08:完全背包 (LeetCode 139. 单词拆分)
139. 单词拆分 (求排列方法) 题目链接🔥🔥 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没…...
Java网络编程(二)Socket 套接字(TCP和UDP),以及TCP的回显
Socket 套接字(TCP和UDP),以及TCP的回显 Socket 套接字数据报套接字UDPTCP流套接字编程TCP的长短连接实现一个简单回显服务器 Socket 套接字 我们软件工作者,着重编写的是应用层的代码,但是发送这个数据,我…...
C++ - 多态语法 - 虚函数使用介绍
多态简单介绍 多态就是多种形态,是不同的对象去完成同一个动作所产生的结果可能有多种。这种多种的形态我们称之为多态。 比如:我们在买票的时候的时候,可能有成人全价,儿童半价,军人免票等等。对于成人,儿…...
php获取客户端ip地址及ip所在国家、省份、城市、县区
摘要 获取客户端ip地址,然后使用这个ip地址获取所在的国家、省份、城市,可以在网站中实现IP属地,发布地等功能。 本文的获取IP地址信息均采自网络上免费的IP查询网站,通过其API或者网页HTML解析出的ip地址信息。 代码 <?p…...
Error: Port Library failed to initialize: -86
最近遇到一个很奇怪的错误,这里记录一下,以备以后再次遇到 Error: Port Library failed to initialize: -86 Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.背景是,就是一普…...
SOME/IP 支持两种序列化方式:TLV 和 TV
SOME/IP 是一种基于 IP 的可扩展面向服务的中间件协议,它可以在车载以太网中实现 ECU 之间的高效通信和互操作性。 SOME/IP 的序列化方式是指将数据结构或对象按照一定的规则转换成字节序列的过程,以便在网络中传输和解析。 SOME/IP 支持两种序列化方式:TLV 和 TV。 TLV是…...
Unity之3D物理导航系统
一 介绍 Unity自带寻路(导航)系统是unity官方自带的一种寻路系统。我们可以通过它来制作简单的寻路,比如可以制作点击某个位置,让角色自动的绕开障碍走到目标点的效果,比如可以制作敌人AI,让它可以通过NavMesh绕开障碍追击我方单…...
9.4黄金行情是否反转?今日多空如何布局?
近期有哪些消息面影响黄金走势?今日黄金多空该如何研判? 黄金消息面解析:周一(9月4日)亚市盘中,现货黄金震荡走高,延续上周涨势,一度刷新日内高点至1946.16美元/盎司。周三,ISM将发布服务业P…...
Win10下使用vim9
作为一个经常与文字打交道的Writer,你在学会Vim的基本操作之后,就一定会爱上Vim的。 以下是Windows10_64位(专业版)环境中安装、使用Vim9的全过程,分享一下: 一、下载、安装Vim9 去Vim官网去下载最新的Vi…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...






