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

news2024/11/28 11:40:06

多表查询

之前学过在需要同时查询多个表时使用 JOIN 进行表关联,但其实还有一种方法,使用 WHERE 关键字进行表的关联
WHERE 有等值与非等值连接

语法:

SELECT 列名 ...
FROM 表名
WHERE [表名.]<列名1><比较运算符>[表名.]<列名2>;

比较运算符主要有:=><>=<=!=<> 还有 andbetween 等
当连接运算符为=时为等值连接,其它的是非等值连接
eg1: where table1.c=table2.c(等值连接)
eg2: where table2.c>100 (非等值连接)

示例
查询所有学生的各科成绩(学生ID,姓名,学科,成绩,班级)

SELECT a.id,a.name,c.subject_name,b.score,a.clazz
FROM 
		students AS a,
		score AS b,
		subject AS c
WHERE a.id = b.id AND
	  b.subject_id = c.subject_id;

WHERE 条件连接多表与 INNER JOIN 的效果是一样的。

子查询

对于多个表的同时查询,我们已经学过了 JOIN 关键字对多个表进行关联,学了 使用WHERE 条件连接多表,除此之外,其实还有一种办法,那就是子查询,也就是嵌套在查询中的查询

子查询是SQL 语言的一种高级用法,我们知道,在SQL中,一个 SELECT-FROM-WHERE 语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,我们就可以根据步骤每一步写出一个查询块,再根据各个查询块之间的关系将它们嵌套在一起。 这样一来,等于是按照我们自己的想法来编写SQL语句,便于理解,提高可读性。

子查询一般可以分为三类:
SELECT 子查询
WHERE 子查询
FROM 子查询

我们接下来分别研究一下这三种子查询

SELECT 子查询

SELECT 子查询就是子查询块嵌套在另一个查询的 SELECT 语句中
我们给出一个题设,查询施笑槐同学六科成绩中的最高成绩

看到这个题目时,首先分析需要哪些表,查询的依据是姓名 施笑槐 ,那就需要 name 字段,只有 students 表有 name 字段,其次要查询成绩,也就是 score 字段,那就需要 score表。

然后我们设计查询思路,students 表与score 表的唯一关联之处在于 id 字段,所以我们可以在 students 表中用 name 字段查询出其对应 id,再使用 id 在score 表中查询其对应所有score 字段,然后使用 MAX 函数即可取出最大值

有了思路我们便可以一步一步完成。先完成第一步,在 students 表中用 name 字段查询出其对应 id:

SELECT id 
FROM students
WHERE name = '施笑槐';

接下来完成第二步,使用 id 在score 表中查询其对应所有score 字段,这里很明显,要使用的 id 就是我们第一步查询出来的结果中的 id 值,所以将这一步的查询块嵌套到上一步的 SELECT 语句中:

SELECT (SELECT score FROM score WHERE score.id = students.id) AS 最高成绩
FROM students
WHERE name = '施笑槐';

在这里,这个 students.id 其实就是在第一步中查询出来的 id 值,因为第一步的查询结果是 单行单列,也就是单个值,id 在第一步时被赋值,传递到子查询中进行。结果:

这里出现了报错,报错信息为 Subquery returns more than 1 row ,意思是**“子查询返回多于一行”,原因是每个学生id 在score表中有多行 score 数据**,而 SELECT 子查询不能返回多行结果,故而报错:

所以这里一般和聚合函数搭配使用,例如:

SELECT (SELECT MAX(score) FROM score WHERE score.id = students.id) AS 最高成绩
FROM students
WHERE name = '施笑槐';

通过子查询,我们便可以更加方便地实现多种多样的查询了,例如:

查询施笑槐同学的 id,姓名,总成绩和班级:

SELECT id,
       name,
	   (SELECT SUM(score) FROM score WHERE score.id = students.id) AS 总成绩,
	   clazz
FROM students
WHERE name = '施笑槐';

查询文科三班所有同学的 id,姓名,总成绩和班级,并按总成绩进行降序排序:

SELECT id,
	   name,
	   (SELECT SUM(score) FROM score WHERE score.id = students.id) AS 总成绩,
	   clazz
FROM students
WHERE clazz = '文科三班'
ORDER BY 总成绩 DESC;

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

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

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

相关文章

TsuKing: Coordinating DNS Resolvers and Queries into Potent DoS Amplifiers

目录 笔记后续的研究方向摘要引言之前的工作。我们的研究贡献 TsuKing: Coordinating DNS Resolvers and Queries into Potent DoS Amplifiers CCS 2023 笔记 本文介绍了一种名为 TsuKing 的新型 DNS 放大攻击。与以前利用单个DNS解析器的攻击不同&#xff0c;TsuKing协调多个…

接口自动化测试过程中怎么处理接口依赖?

面试的时候经常会被问到在接口自动化测试过程中怎么处理接口依赖&#xff1f; 首先我们要搞清楚什么是接口依赖。 01. 什么是接口依赖 接口依赖指的是&#xff0c;在接口测试的过程中一个接口的测试经常需要依赖另一个或多个接口成功请求后的返回数据。 那怎么处理呢&#x…

【软件测试】技术精选:Jmeter常见的几种报错

1、Java.net.UnknownHostException 这个错的含义是 没有连接到服务器地址&#xff0c;因此很可能是 内部网络中断导致。 2、502 Bad gateway 这个和本地的线程数无关 可能原因是网络抖动不稳定导致 3、java.net.SocketException: Socket closed 强制停止线程&#xff0c;连接…

旋转设备状态监测与预测性维护:提高设备可靠性的关键

在工业领域的各个行业中&#xff0c;旋转设备都扮演着重要的角色。为了确保设备的可靠运行和预防潜在的故障&#xff0c;旋转设备状态监测及预测性维护变得至关重要。本文将介绍一些常见的旋转设备状态监测方法&#xff0c;并探讨如何利用这些方法来实施预测性维护&#xff0c;…

Android基础: 使用Java代码控制 Activity类页面相互之间进行跳转 Activity页面的的启动和结束

Android基础&#xff08;Activity&#xff09; Activity的启动和结束 我们主要看Java代码逻辑&#xff1a; 第一个页面的逻辑代码 public class StartActivity01 extends AppCompatActivity implements View.OnClickListener {Overrideprotected void onCreate(Bundle saved…

temu最近数据:拼多多旗下跨境电商平台的业绩持续增长

据最近的报道和数据显示&#xff0c;拼多多旗下的跨境电商平台Temu在2023年第三季度取得了显著的业绩增长。销售额突破50亿美元&#xff0c;市场份额不断扩大&#xff0c;用户数量迅速增长。本文将深入探讨Temu的业绩增长、市场份额、用户增长以及其营销策略。 先给大家推荐一款…

C语言给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)

这个题目要求的输出是一串数字&#xff01;&#xff01;&#xff01; 不是下面&#xff1a;输入在一行中给出 10 个非负整数&#xff0c;顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50&#xff0c;且至少拥有 1 个非…

伯俊软件CTO陈雨陆:R3全渠道业务中台的OceanBase落地实践

11 月 16 日&#xff0c;OceanBase 在京顺利举办 2023 年度发布会&#xff0c;正式宣布&#xff1a;将持续践行“一体化”产品战略&#xff0c;为关键业务负载打造一体化数据库。其中&#xff0c;“数字化转型升级实践专场”我们有幸邀请到伯俊软件 CTO 陈雨陆进行《OceanBase …

洗地机哪个牌子好用?洗地机希亦、石头、添可、西屋谁的清洁力更强?

洗地机的出现极大地改善了清洁过程&#xff0c;提高了效率&#xff0c;减少了人力投入。但随着市场上洗地机的种类和功能不断增加&#xff0c;人们可能会感到困惑&#xff0c;不知道如何选择适合自己需求的机器。为了帮助消费者更好地了解洗地机的选择&#xff0c;今天我将带大…

Redlock算法实现Redis分布式锁

Redlock算法实现Redis分布式锁 为什么基于故障转移的实现还不够 使用 Redis 锁定资源的最简单方法是在实例中创建密钥。密钥通常是在有限的生存时间内创建的&#xff0c;使用 Redis 过期功能&#xff0c;以便最终它被释放&#xff08;我们列表中的属性 2&#xff09;。当客户…

老师需要具备的能力

作为一名老师&#xff0c;需要具备许多能力&#xff0c;来有效地教授学生知识和技能。本文将从以下几个方面探讨老师所需具备的能力。 一、教学能力 教学是老师工作的核心&#xff0c;因此老师需要具备高超的教学能力。这包括了开展教学计划、教学设计、授课技巧和引导学生思考…

数据分享 I 各类制造业企业进入数量数据,shp/excel格式数据,覆盖2002-2019年数据,已可视化处理

随着经济的发展和社会的进步&#xff0c;制造业作为国民经济的重要支柱&#xff0c;一直保持着快速的发展态势。近年来&#xff0c;随着国家对制造业的大力扶持&#xff0c;各类制造业企业如雨后春笋般涌现出来&#xff0c;为经济的发展注入了新的活力。 各类制造业企业进入…

CAD画图-模型和布局区别,视图命令MV使用(用于局部放大显示)

模型和布局的图像区别 模型的图像&#xff1a; 是我们常编辑的cad文件&#xff0c;我们可以对里面内容进行编辑和测量等操作 布局的图像&#xff1a;为了可以更好的看到每个部件的相对位置&#xff0c;但对于里面的点位的标注就不行了&#xff0c;但可以对图像中的某些部位进行…

【多线程】-- 12 线程协作之生产者消费者问题及解决办法

多线程 9 线程协作 “生产者消费者问题” ——并非二十三种设计模式之一 9.1 生产者消费者问题 “线程通信” 应用场景&#xff1a;生产者和消费者问题 假设仓库中只能存放一件产品&#xff0c;生产者将生产出来的产品放入仓库&#xff0c;消费者将仓库中产品取走消费如果…

【6】PyQt信号和槽

1. 信号和槽简介 信号和槽机制是 QT 的核心机制&#xff0c;应用于对象之间的通信 信号和槽是用来在对象间传递数据的方法当一个特定事件发生的时候&#xff0c;signal会被emit出来&#xff0c;slot调用是用来响应相应的signal的Qt中对象已经包含了许多预定义的 signal&#…

从开发到测试,你需要掌握哪些必备测试技能?

一、为什么从开发转测试 我从2019年5月开始从一名java开发女程序猿正式转为测试开发工程师&#xff0c;原因除了机缘凑巧之外&#xff0c;当然是因为这个行业对测试工程师的要求已经越来越高&#xff0c;简单做些UI脚本录制和回放的自动化&#xff0c;参考度娘写出框架demo却不…

【ecology】通过F12抓取页面SQL

1、点击流程监控&#xff0c;打开浏览器的”开发者工具“&#xff08;F12&#xff09;&#xff1b; 2、点击搜索&#xff0c;在开发者工具中找到sessionkey&#xff0c;复制后面的值。 3、http://58.213.83.186:8081/api/ec/dev/table/getxml?dataKey 上面的网址的IP地址修改…

变电站设计综合应用软件

产品概述 变电站设计综合应用软件,以下称为软件,是一款面向智能变电站虚拟二次回路设计和光纤回路设计的单机版桌面应用软件。软件为用户提供了直观易用、一键安装、功能齐全的轻量级的设计支撑。像常规的工具化软件一样,该软件在开始设计时需要通过新建一个项目,开启一段…

widnows 使用cprofile、gprof2dot、graphviz对python项目进行可视化性能分析

1. 运行cprofile生成python方法调用信息 pr cProfile.Profile() pr.enable() # 开始记录# 要执行的代码 res your_method()pr.disable() # 结束记录 pr.dump_stats(your/path/restats.dump) #写入dump文件 pr.print_stats() #打印 2. 安装gprof2dot和graphviz 2.1 安装gpr…

【亲测有效,超详细】收到微信小程序限期完成微信认证通知怎么处理?微信小程序年审认证都需要哪些资料?

背景&#xff1a;近期部分微信小程序管理员最近收到了年审认证通知如下图 微信官方通知 微信小程序认证流程 第一步&#xff1a;登录微信公众平台 网址&#xff1a;微信公众平台 第二步&#xff1a;登录进入后会看到年审通知弹窗&#xff0c;点击去年审 第二步&#xff1a;登…