SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(七)

LEFT JOIN

LEFT JOIN 同样用于关联两个表,ON 关键字后指定两个表共有的字段作为匹配条件,与 INNER JOIN 不同的地方在于匹配不上的数据行INNER JOIN 对两表匹配不上的数据行不返回结果,而 LEFT JOIN 只对右表(table2)匹配不上的数据行不返回结果,但是对左表(table1)匹配不上的数据行依然返回结果

语法:

SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

columns:要显示的列名。
table1:左表的名称。
table2:右表的名称。
column_name:表中用于连接的列名。
table1.column_name:表示table1表的column_name字段。

举例说明:
依然使用之前的score学生成绩表和subject课程数据表,对subject表进行一些修改,删除语文科目的数据行:

此时依然使用 INNER JOIN 关联两表,查询学生各科成绩:

SELECT id,score.subject_id,subject_name,score
FROM score
INNER JOIN subject
ON score.subject_id = subject.subject_id;

从结果中看到每个学生本应有六科成绩,但是此时只能查询出五科的成绩,因为缺失语文科目的数据行,两张表匹配不上的行都没有返回结果。

如果使用 LEFTJOIN 的关联方式呢?

SELECT id,score.subject_id,subject_name,score
FROM score
LEFT JOIN subject
ON score.subject_id = subject.subject_id;

我们注意到,LEFT JOIN 关联后,左表(score表)的部分数据行没有匹配成功,但是依然返回了结果。也就是说,左表的数据行不管能否匹配成功,都会在结果中显示出来,不会造成左表数据的遗漏,一般用于左表存储了重要的,不可遗落的数据的情况。

RIGHT JOIN

既然有 LEFT JOIN ,那自然也有 RIGHT JOIN 。RIGHT JOIN 与 LEFT JOIN 正好相反右表的数据行不管能否匹配成功,都会在结果中显示出来,不会造成右表数据的遗漏。

语法:

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

columns:要显示的列名。
table1:左表的名称。
table2:右表的名称。
column_name:表中用于连接的列名。
table1.column_name:表示table1表的column_name字段。

举例说明:
先把 subject 表的数据修改一下,增加一条新数据“1000000 体育”,这条数据在score表中没有匹配项。
新subject表如下:

将score表与subject表进行 RIGHT JOIN 关联,查询学生各科成绩:

SELECT id,score.subject_id,subject_name,score
FROM score
RIGHT JOIN subject
ON score.subject_id = subject.subject_id;

RIGHT JOIN 关键字从右表(subject表)返回所有的行,即使表中有匹配不到的数据行。

本专栏将持续更新,对数据库SQL感兴趣的同学可以关注一下,谢谢!

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

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

相关文章

<C++>类和对象下|初始化列表|explicit static|友元|内部类|匿名对象|构造函数的优化

文章目录 1. 初始化列表2. explicit关键字3. 友元3.1 友元函数3.2 友元类 4. static关键字4.1 概念4.2 特性 5.内部类5.1 概念5.2 特性 6. 匿名对象7. 拷贝构造时的优化 1. 初始化列表 在类的构造函数体中,对成员属性写的操作叫做赋值,那么成员的初始化…

[CISCN 2023 初赛]ezbyte

从字符串找到%100s,发现下面有个yes 跟踪yes 、 yes之前有个jmp 看上面的代码,要想跳转到含有yes这一块,需要r13等于r12 xor r13,r13说明r13是0,但是找不到r12的操作代码 实际着这个关键的操作r12的加密逻辑&…

Android 弹出自定义对话框

Android在任意Activity界面弹出一个自定义的对话框,效果如下图所示: 准备一张小图片,右上角的小X图标64*64,close_icon.png,随便找个小图片代替; 第一步:样式添加,注意:默认在value…

基于SSM的在线投稿系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

RAAGR2-Net:一种使用多个空间帧的并行处理的脑肿瘤分割网络

RAAGR2-Net: A brain tumor segmentation network using parallel processing of multiple spatial frames RAAGR2-Net:一种使用多个空间帧的并行处理的脑肿瘤分割网络背景贡献实验N4 bias-field-correction 数据预处理Z-score and re-sampling Z-score归一化&#…

快速入门:构建您的第一个 .NET Aspire 应用程序

##前言 云原生应用程序通常需要连接到各种服务,例如数据库、存储和缓存解决方案、消息传递提供商或其他 Web 服务。.NET Aspire 旨在简化这些类型服务之间的连接和配置。在本快速入门中,您将了解如何创建 .NET Aspire Starter 应用程序模板解决方案。 …

Ubuntu 22.04安装Rust编译环境并且测试

我参考的博客是《Rust使用国内Crates 源、 rustup源 |字节跳动新的 Rust 镜像源以及安装rust》 lsb_release -r看到操作系统版本是22.04,uname -r看到内核版本是uname -r。 sudo apt install -y gcc先安装gcc,要是结果给我的一样的话,那么就是安装好了…

NPM 与 XUI 共存!Nginx Proxy Manager 搭配 X-UI 实现 Vless+WS+TLS 教程!

之前分享过搭建可以与宝塔共存的一个 “魔法” 服务器状态监控应用 ——xui,支持 VmessWSTLS。 最近 Docker 视频出的比较多,前阵子又出现了宝塔国内版存在隐私泄露的问题,很多小伙伴其实都不用宝塔了,那么,在我们现在…

基于django的在线教育系统

基于python的在线教育系统 摘要 基于Django的在线教育系统是一种利用Django框架开发的现代化教育平台。该系统旨在提供高效、灵活、易用的在线学习体验,满足学生、教师和管理员的需求。系统包括学生管理、课程管理、教师管理、视频课程、在线测验等核心功能。系统采…

python趣味编程-5分钟实现一个打字速度测试(含源码、步骤讲解)

Python速度打字测试是用 Python 编程语言编写的,速度打字测试 Python项目理念,我们将构建一个令人兴奋的项目,通过它您可以 检查 甚至 提高 您的打字速度。 为了创建图形用户界面(GUI),我们将使用 用于处理图形的pygame库。 Python 打字速度测试有利于学生或初学者提高…

python中的NumPy和Pandas往往都是同时使用,NumPy和Pandas的在数据分析中的联合使用

文章目录 前言一、numpy的介绍与用法二、pandas的介绍与用法三、numpy与pandas的联合使用说明四、numpy与pandas的联合使用程序代码4.1 读取CSV文件并进行数据清洗,如去除NaN值4.2 矩阵操作和特征工程,如标准化处理4.3 使用Pandas进行数据筛选和分组聚合…

Android resource/drawable转换成Uri,Kotlin

Android resource/drawable转换成Uri,Kotlin private fun convertResource2Uri(resId: Int): Uri {return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE "://" resources.getResourcePackageName(resId) / resources.getResourceTypeName(resI…