数据库系统概论|第三章:关系数据库标准语言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语句可以同时实现选择查询以及连接查询

相关推荐
徐子元竟然被占了!!3 小时前
Linux-systemctl
linux·数据库·oracle
码界奇点3 小时前
Python从0到100一站式学习路线图与实战指南
开发语言·python·学习·青少年编程·贴图
智者知已应修善业3 小时前
【求中位数】2024-1-23
c语言·c++·经验分享·笔记·算法
张人玉4 小时前
百度 AI 图像识别 WinForms 应用代码分析笔记
人工智能·笔记·百度
xqqxqxxq5 小时前
背单词软件技术笔记(V1.0核心版及V2.0随机挖字母)
笔记
YJlio5 小时前
Active Directory 工具学习笔记(10.8):AdInsight——保存与导出(证据留存、共享与二次分析)
数据库·笔记·学习
suoyue_zhan5 小时前
GBase的管理监控平台GEM实践指南
数据库
xqqxqxxq6 小时前
背单词软件技术笔记(V2.0扩展版)
java·笔记·python
哈哈老师啊6 小时前
Springboot学生综合测评系统hxtne(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot