SQL查询技巧:从基础到进阶

需积分: 0 1 下载量 109 浏览量 更新于2024-07-23 收藏 236KB DOC 举报
"SQL语句学习资源" SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库系统的核心语言。以下是一些基本的SQL查询示例: 1. 查询“001”课程比“002”课程成绩高的所有学生的学号: 这个查询通过子查询的方式比较了两个课程的成绩。首先,创建两个子查询,分别获取“001”和“002”课程的学生及其成绩。然后,通过外层查询比较这两个子查询的结果,找出在“001”课程中得分高于“002”课程的学生。 2. 查询平均成绩大于60分的同学的学号和平均成绩: 此查询使用`GROUP BY`和`HAVING`子句来按学生学号分组,并计算每个学生的平均成绩。`HAVING`子句在聚合函数之后过滤结果,只保留平均成绩大于60分的学生。 3. 查询所有同学的学号、姓名、选课数、总成绩: 这个查询使用`LEFT OUTER JOIN`来确保即使学生没有成绩记录,也能显示其基本信息。通过连接`Student`和`SC`表,可以获取每个学生的选课数量和总成绩,`GROUP BY`子句按学生学号和姓名分组。 4. 查询姓“李”的老师的个数: 该查询利用`LIKE`操作符和通配符‘%’来匹配以“李”开头的教师名字,然后使用`COUNT(DISTINCT Tname)`来计算不同姓“李”的教师数量。 5. 查询没学过“叶平”老师课的同学的学号、姓名: 此查询通过`NOT IN`子句找出没有出现在与“叶平”老师关联的课程记录中的学生。首先,子查询找出所有上过“叶平”老师课程的学生学号,然后主查询排除这些学号。 6. 查询学过“001”并且也学过编号“002”课程的同学的学号、姓名: 这个查询结合了`INNER JOIN`和`EXISTS`子句。首先,它找到所有学过“001”课程的学生,然后通过`EXISTS`子句检查这些学生中是否有学过“002”课程的记录。 7. 查询学过“叶平”老师所教的所有课的同学的学号、姓名: 这个查询使用`IN`子句来查找学过“叶平”老师所有课程的学生。首先,子查询获取“叶平”老师教授的所有课程编号,然后主查询找出那些课程记录中包含这些课程编号的学生。 以上是SQL基础查询技巧的实例,涵盖了子查询、联接、分组、过滤、聚合函数等多种操作,有助于初学者理解和掌握SQL查询的基本语法。通过实践和理解这些例子,可以进一步提高SQL查询能力。