从零开始复习SQL( 第一天)

在做查询前要先对整个数据库要熟悉
在这里插入图片描述
备注:问题都要自己想,看完的东西只算是资源,学到的东西才算是知识。
查询语序:

Select topFrom A
Join B
OnJoin C
OnWhere ……
Group by……
having……
order by ……
问题 1.查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号(重点)

分析:
需要字段:课程编号c_id、课程成绩s_score、学号s_id
需要表格:score表格
代码:

use zq--使用zq数据库
--1.查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号(重点)
select s1.s_id'学号',s1.s_score '课程1成绩',s2.s_score '课程2成绩' from
(select * from score  where score.c_id =01) s1 --查询第一个课程号为01的所有同学,注意此处就没有课程号为02的什么事了,和excel筛选一个意思
join
(select * from score  where score.c_id =02) s2--查询第二个课程号为02的所有同学
on s1.s_id =s2.s_id --将两个表格学生成绩合并到一起
where s1.s_score >s2.s_score --查询条件:课程号1成绩高于课程号2的同学

思想:
根据字段找到需要的表格——需要两个score表格——将符合条件表格拼接进行查询
就像题目(要从字段入手,从总体观点找想要的数据):

  1. 课程编号为“01”的课程成绩
  2. 课程编号为“02”的课程成绩
  3. 根据学号拼接
  4. 课程1 比课程2 成绩高

问题2–查询平均成绩大于60分的学生的学号和平均成绩

分析:
需要字段:成绩s_score、学号s_id
需要表格:score表格
代码:

--查询平均成绩大于60分的学生的学号和平均成绩(使用聚合函数)
use zq
select s_id'学号',AVG(s_score)'平均成绩' from score
group by s_id
having AVG(s_score)> 60

思想:
本问题比较简单,主要是做查询的时候千万不要忘了使用聚合函数,group by 千万不能忘。group by一定要接着having而不是where,查询学号相同,平均成绩>60的同学,然后改名字。就OK了。
今天的分享到此结束。
在这里插入图片描述

原创文章 5 获赞 2 访问量 137

猜你喜欢

转载自blog.csdn.net/zgd1239/article/details/105805756