数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记4

前言

前面详细介绍了关于SELECT语句的相关使用方法,继续上文的介绍,本文将继续介绍数据查询的其他相关操作,主要包括排序(ORDER BY)子句、分组(GROUP BY)子句 。与此同时,介绍完单表查询之后,本文还将介绍**多表查询(连接查询)**的相关基本语句。

注:本文中所涉及的数据库前文中已经介绍(指路:数据库系统概论|第三章:关系数据库标准语言SQL---课程笔记1

一、排序子句

排序子句(ORDER BY)主要用于对于查询结果进行按照一个或者多个属性进行升序或者降序排列,按照ASC或者DESC来控制升序降序,默认为进行升序排列。

R 复制代码
SELECT Sno,Grade
FROM SC
WHERE Cno = '3'
ORDER BY Grade DESC, Sno

上述代码的含义为++查询SC表中的Sno与Grade这两列,将Cno为3的学生学号与姓名进行筛选,并将这两列结果按照成绩降序,学号升序(成绩相同的两人按照学号升序排列)的方法进行排列。++

二、分组子句

分组子句(GROUP BY)主要用于将查询结果按照一列或者多列的值进行分组,值相等的为一组。分组后,聚集函数将作用于每一组,即每一组都有一个函数值。

R 复制代码
SELECT Cno, COUNT(Sno)
FROM SC
GROUP BY Cno

上述代码的含义为++查询SC表中的Cno属性,并根据Cno进行分组,即Cno相同的自动归为同一组,再根据分组后的Cno,将其中所包含的Sno进行计数统计。【求各个课程号及相应的选课人数】++

R 复制代码
SELECT Sno, AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade) >= 90

如果想要输出满足指定条件的分组结果,那就要将分组后的情况再次进行筛选,此时,筛选语句便不再使用"WHERE",而是采用"HAVING"进行条件筛选,如上述代码,++查询SC表中的Sno属性,并根据Sno进行分组,即统计每个学生的平均成绩,并且筛选出那些平均成绩大于等于90的学生。++


基于此,我们已经介绍完了关于单表查询的相关代码以及具体实例,接下来,我们将进一步介绍有关多表查询,即连接查询的相关代码与实例


三、等值与非等值连接查询

在实际查询过程中,经常会遇到某一次查询可能会涉及到多表的情况,比如查询每一个学生的选课情况,便要涉及StudentSC两个表,同时还要构建两个表之间的连接,才能更好的进行数据的查看。

R 复制代码
SELECT Student.*, SC.*
FROM Student, SC
WHERE Student.Sno = SC.Sno

上述代码的含义为++查询每一个学生的具体选课情况。【在本示例中应该着重关注关于前缀的使用,在两个表Student与SC中,均具有Sno这一属性名,因此要增加前缀予以区分,如果属性名并不相同,即不会引起歧义,则无需增加前缀】++

R 复制代码
SELECT Student.Sno, Sname
FROM Student, SC
WHERE Student.Sno = SC.Sno AND SC.Cno = '2' AND SC.Grade > 90

上述代码的含义为++查询选择2号课程且成绩在90分以上的所有同学的学号和姓名。++

上述代码首先根据Student表与SC表的等值连接,以展示每一个学生的选课情况以及成绩,进而通过WHERE语句进行了进一步的条件限制。

WHERE语句可以同时实现选择查询以及连接查询

相关推荐
RestCloud10 小时前
4中常见的数据集成方式
数据库
阿里云云原生11 小时前
阿里云百炼开源面向 Java 开发者的 NL2SQL 智能体框架
sql
Databend11 小时前
超 10 倍查询加速,N-Gram Index 设计与优化全解析
数据库
爱可生开源社区12 小时前
SCALE:一个面向专业级任务的大语言模型 SQL 能力开源评测框架
数据库
星环科技TDH社区版13 小时前
星环科技产品可存储的表格式功能介绍以及创建示例
大数据·数据库
Tapdata16 小时前
全球 DaaS 市场研究报告上线,聚焦数据服务化趋势与行业演进路径
数据库
梦境虽美,却不长17 小时前
算法 学习 排序 2025年6月16日10:25:37
数据结构·学习·排序算法
speop17 小时前
【datawhale组队学习】共读AI新圣经
人工智能·学习
李少兄17 小时前
MySQL 默认连接数
数据库·mysql
羑悻的小杀马特17 小时前
从信息孤岛到智能星云:学习助手编织高校学习生活的全维度互联网络
c++·学习·生活·api