SQL查询技巧解析:从基础到高级
需积分: 0 100 浏览量
更新于2024-12-19
收藏 62KB DOC 举报
"深入浅出SQL.doc 是一份详细的SQL学习资料,涵盖了多个关于SQL查询的示例和问题解答。"
在SQL中,数据查询是数据库管理的核心任务,本资料中的问题和解决方案展示了SQL语言的多种使用场景。以下是这些SQL查询的详细解析:
1. 查询“001”课程比“002”课程成绩高的所有学生的学号:
这个查询使用了子查询和联接操作。首先,创建两个子查询,分别获取“001”和“002”课程的成绩,然后通过比较这两个子查询的结果找出分数更高的学生。`WHERE a.score > b.score AND a.s# = b.s#` 确保了只有在相同学生且“001”课程分数高于“002”课程时才被选取。
2. 查询平均成绩大于60分的同学的学号和平均成绩:
这里使用了`GROUP BY`和`HAVING`子句。`GROUP BY S#`按学生学号对成绩进行分组,`AVG(score)`计算每个学生的平均成绩,`HAVING AVG(score) > 60`则筛选出平均成绩超过60分的学生。
3. 查询所有同学的学号、姓名、选课数、总成绩:
这个查询使用了`LEFT OUTER JOIN`以确保即使学生没有成绩记录,也能出现在结果集中。`COUNT(SC.C#)`计算每位学生的选课数,`SUM(score)`计算总成绩。`GROUP BY`按学生学号和姓名分组,确保每个学生只有一条记录。
4. 查询姓“李”的老师的个数:
此查询利用了`LIKE`操作符和`COUNT(DISTINCT Tname)`。`LIKE '李%'`匹配以“李”开头的老师姓名,`DISTINCT`去除重复,`COUNT`计算不重复的姓“李”老师数量。
5. 查询没学过“叶平”老师课的同学的学号、姓名:
使用了`NOT IN`操作符和子查询,子查询找到所有上过“叶平”老师课程的学生学号,然后主查询排除这些学号。
6. 查询学过“001”并且也学过编号“002”课程的同学的学号、姓名:
这个查询使用了`AND`条件和`EXISTS`子查询。先找到上过“001”课程的学生,然后通过`EXISTS`子查询检查这些学生是否也上过“002”课程。
7. 查询学过“叶平”老师所教的所有课的同学的学号、姓名:
使用了`IN`操作符和子查询。子查询找出所有上过“叶平”老师课程的学生,主查询则返回这些学生的信息。
以上这些查询展示了SQL在数据过滤、聚合、关联、子查询等方面的强大功能,对于理解和掌握SQL语言具有很高的参考价值。通过学习这些实例,读者可以更好地理解和运用SQL来处理复杂的数据查询需求。
2009-05-08 上传
2022-04-25 上传
2010-06-22 上传
2010-03-23 上传
2009-04-26 上传
2021-10-08 上传
2022-11-30 上传
2023-08-18 上传
2013-04-10 上传
zhongji555
- 粉丝: 1
- 资源: 6
最新资源
- Elasticsearch核心改进:实现Translog与索引线程分离
- 分享个人Vim与Git配置文件管理经验
- 文本动画新体验:textillate插件功能介绍
- Python图像处理库Pillow 2.5.2版本发布
- DeepClassifier:简化文本分类任务的深度学习库
- Java领域恩舒技术深度解析
- 渲染jquery-mentions的markdown-it-jquery-mention插件
- CompbuildREDUX:探索Minecraft的现实主义纹理包
- Nest框架的入门教程与部署指南
- Slack黑暗主题脚本教程:简易安装指南
- JavaScript开发进阶:探索develop-it-master项目
- SafeStbImageSharp:提升安全性与代码重构的图像处理库
- Python图像处理库Pillow 2.5.0版本发布
- mytest仓库功能测试与HTML实践
- MATLAB与Python对比分析——cw-09-jareod源代码探究
- KeyGenerator工具:自动化部署节点密钥生成