SQL单表查询(2)

对查询结果排序

◆使用ORDER BY子句
-- 可以按一个或多个属性列排序
-- 升序:ASC;降序:DESC;缺省值为升序
◆ 当排序列含空值时
-- ASC:排序列为空值的元组最后显示
-- DESC:排序列为空值的元组最先显示
eg**:** 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列

sql 复制代码
SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;

Sdept为主排序,Sage为次要排序,当系相同才按年龄排序。

使用集函数

5 类主要集函数
-- 统计个数
COUNT ( < 列名 > )
-- 计算列总和
SUM ( < 列名 > )
-- 计算列平均值
AVG ( < 列名 > )
-- 求列最大值
MAX ( < 列名 > )
-- 求列最小值
MIN ( < 列名 > )
eg: 查询选修了课程的学生人数

sql 复制代码
SELECT COUNT(DISTINCT Sno)
FROM SC;

注: 用 DISTINCT 以避免重复计算学生人数

对查询结果分组

用途
-- 细化集函数的作用对象
• 未对查询结果分组,集函数将作用于整个查询结果
• 对查询结果分组后,集函数将分别作用于每个组
◆使用GROUP BY子句分组
-- 分组方法:按指定的一列或多列值分组,值相等的为一组
-- 使用GROUP BY子句后,SELECT子句的列名列表中只能出现分组属性和集函数
eg: 求各个课程号及相应的选课人数

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

◆ 使用HAVING短语筛选最终输出结果
-- 只有满足HAVING短语指定条件的组才输出
◆ HAVING短语与WHERE子句的区别:作用对象不同
-- WHERE子句作用于基表或视图,从中选择满足条件的元组
-- HAVING短语作用于组,从中选择满足条件的组
eg: 查询选修了 3 门以上课程的学生学号

sql 复制代码
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >=3

查询格式总结

相关推荐
人丰6 小时前
一次生产卡顿复盘:BI 数据抽取引发 PostgreSQL 长事务事故
数据库·c#
程序员塔塔喵6 小时前
【MySQL篇|第四篇】事务隔离级别
数据库·mysql·事务隔离级别
oradh6 小时前
Oracle 外部表(External Tables)使用总结
数据库·oracle
弦儿6 小时前
后端 Web 实战:员工管理模块(多表关系 + 多表查询 + 分页查询 + 条件分页)
后端·sql
长安米粒贵6 小时前
事务隔离级别选对了,为什么还是会出现丢失更新?聊聊 5 个并发误区
数据库
一条泥憨鱼7 小时前
【Redis | 黑马点评】达人探店功能源码解读
数据库·redis·缓存
赵渝强老师7 小时前
【赵渝强老师】崖山数据库的命令行客户端工具
数据库·国产数据库·yashandb·崖山数据库
忡黑梨7 小时前
PostgreSQL 小版本升级实战:14.23 升级到 14.24(源码编译方式)
数据库·postgresql
LMT流氓兔7 小时前
第五单元——第11课:自动测试“拒绝后绝不能写入”
数据库·人工智能·python·langchain
小朱爱编程1237 小时前
AI点了两次发布,我多了两篇事故
数据库·人工智能·大模型·软件工程