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.mzph.cn/news/147686.shtml

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

相关文章

Rust根据条件删除相邻元素:dedup

文章目录 示例dedup_bydedup_by_key Rust系列:初步⚙所有权⚙结构体和枚举类⚙函数进阶⚙泛型和特征⚙并发和线程通信 示例 Rust中的动态数组Vec提供了dedup函数,用于删除相邻重复元素。此外,还提供了dedup_by和dedup_by_key,可…

STM32外部中断(EXTI)与RTOS多任务处理的协同设计

当在STM32上使用外部中断(EXTI)与RTOS(Real-Time Operating System,实时操作系统)进行多任务处理时,需要设计合适的协同机制,以确保可靠的中断处理和任务调度。在下面的概述中,我将介…

【shell 常用脚本30例】

先了解下编写Shell过程中注意事项 开头加解释器:#!/bin/bash语法缩进,使用四个空格;多加注释说明。命名建议规则:全局变量名大写、局部变量小写,函数名小写,名字体现出实际作用。默认变量是全局的&#xf…

AnimateDiff搭配Stable diffution制作AI视频

话不多说,先看视频 1. AnimateDiff的技术原理 AnimateDiff可以搭配扩散模型算法(Stable Diffusion)来生成高质量的动态视频,其中动态模型(Motion Models)用来实时跟踪人物的动作以及画面的改变。我们使用 …

MongoDB之索引和聚合

文章目录 一、索引1、说明2、原理3、相关操作3.1、创建索引3.2、查看集合索引3.3、查看集合索引大小3.4、删除集合所有索引(不包含_id索引)3.5、删除集合指定索引 4、复合索引 二、聚合1、说明2、使用 总结 一、索引 1、说明 索引通常能够极大的提高查…

安卓手机投屏到电视,跨品牌、跨地域同样可以实现!

在手机网页上看到的视频,也可以投屏到电视上看! 长时间使用手机,难免脖子会酸。这时候,如果你将手机屏幕投屏到大电视屏幕,可以减缓脖子的压力,而且大屏的视觉体验更爽。 假设你有一台安卓手机,…

Pycharm之配置python虚拟环境

最近给身边的人写了脚本,在自己电脑可以正常运行。分享给我身边的人,却运行不起来,然后把报错的截图给我看了,所以难道不会利用pycharm搭建虚拟的环境?记录一下配置的过程。 第一步:右键要打开的python的代…

科大讯飞会议笔记本、GoodNotes、E人E本 功能及体验对比

科大讯飞会议笔记本、GoodNotes、E人E本功能及体验对比 【旧文档,怕失传】 通过对科大讯飞会议笔记本、基于iPad的GoodNotes以及E人E本的各项功能指标进行了实际对比,得出了以下结果: 在实际体验中,科大讯飞笔记本在录音方面表…

人脸识别4G执法记录仪、一体化智能AI布控球在智慧社区、智能网格中的应用

智慧社区守护者:人脸识别与智能监控技术的融合创新 随着城市的飞速发展和科技的不断进步,智慧社区和智能网格的概念已经成为现代城市管理的一个重要趋势。在这一过程中,人脸识别技术、4G执法记录仪以及一体化智能AI布控球等智能监控设备&…

大数据之Hive:regexp_extract函数案例

目录 一、正则的通配符简介1、正则表达式的符号及意义2、各种操作符的运算优先级: 二、案例数据要求分析实现输出结果实现2实现3 总结 一、正则的通配符简介 1、正则表达式的符号及意义 符号含义实列/做为转意,即通常在"/"后面的字符不按原来…

SQL Server去除字符串空格的ltrim() 和 rtrim()函数

SQL Server去除字符串空格的ltrim() 和 rtrim()函数 SQL Server并不提供trim()函数去除字符串两边空格,只提供了去除字符串左边空格ltrim()函数和去除右边字符串空格rtrim()函数,但是只要将这两个函数配合使用,就能达到去除字符串两端空格的…

小美的树上染色

美团2024届秋招笔试第一场编程真题 先提一个小知识:题目中凡是提到树结构都要使用图的存储方式,只有二叉树例外。 分析:在树结构中,孩子和父节点是相邻节点,而父节点可能有多个孩子节点。在染色的过程中,…

实用小算法

开头提醒: 打开自己本地任意一个SpringBoot项目,复制代码到test包下跟着敲。 后面几篇文章不再提醒,希望大家养成习惯。看10篇文章,不如自己动手做一次。 我们不执着于一天看多少篇,但求把每一篇都搞懂,…

如何使用websocket+node.js实现pc后台与小程序端实时通信

如何使用websocketnode.js实现pc后台与小程序端实时通信 一、使用node.js创建一个服务器二、pc后台连接ws三、小程序端连接ws四、实现效果 实现功能:实现pc后台与小程序端互发通信能够实时检测到 一、使用node.js创建一个服务器 1.安装ws依赖 npm i ws2.创建index.js const…

后端技术知识点内容-全部内容-面试宝典-后端面试知识点

文章目录 -2 flink-1 linux of viewlinux查看占用cup最高的10个进程的命令; 〇、分布式锁 & 分布式事务0-1分布式锁--包含CAP理论模型概述分布式锁:分布式锁应该具备哪些条件:分布式锁的业务场景: 分布式锁的实现方式有&#…

整理笔记——MOS管、三极管、IGBT

一、MOS管 在实际生活要控制点亮一个灯,例如家里的照明能,灯和电源之间就需要一个开关需要人为的打开和关闭。 再设计电路板时,如果要使用MCU来控制一个灯的开关,通常会用mos管或是三极管来做这个开关元件。这样就可以通过MCU的信…

Linux安装OpenCV并配置VSCode环境

Linux安装OpenCV并配置VSCode环境 安装OpenCV环境安装必需工具下载并解压OpenCV库(Opencv Core Modules和opencv_contrib)创建构建目录,进行构建验证构建结果安装验证安装结果 配置VSCode环境创建项目文件修改配置信息执行程序 安装环境 Ubun…

DRF纯净版项目搭建和配置

一、安装模块和项目 1.安装模块 pip install django pip install djangorestframework pip install django-redis # 按需安装 2.开启项目和api (venv) PS D:\pythonProject\env_api> django-admin startproject drf . (venv) PS D:\pythonProject\env_api> python ma…

pandas教程:Date and Time Data Types and Tools 日期和时间数据类型及其工具

文章目录 Chapter 11 Time Series(时间序列)11.1 Date and Time Data Types and Tools(日期和时间数据类型及其工具)1 Converting Between String and Datetime(字符串与时间的转换) Chapter 11 Time Serie…

Unity——URP相机详解

2021版本URP项目下的相机,一般新建一个相机有如下组件 1:Render Type(渲染类型) 有Base和Overlay两种选项,默认是Base选项 Base:主相机使用该种渲染方式,负责渲染场景中的主要图形元素 Overlay(叠加):使用了Oveylay的…