美文网首页
SQL基础知识

SQL基础知识

作者: estate47 | 来源:发表于2019-10-17 00:34 被阅读0次
SQL基础知识.png

1.查询每门课程被选修的学生数

INNER JOIN course c 
on sc.cid=c.cid
group by cname;

2.查询出只选修了4门课程的全部学生的学号和姓名

INNER JOIN student s
on sc.sid=s.sid
group by s.sid
HAVING 选课数=4;

3.查询姓张的学生名单

select * from student where sname like '张%';

4.查询同名同姓学生名单,并统计同名人数

GROUP BY sname
HAVING COUNT(*)>=2;

5.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列

INNER JOIN course c
on sc.cid=c.cid
group by cname
order by 平均成绩 asc,课程号 desc;

6.查询平均成绩大于80的所有学生的学号,姓名和平均成绩

INNER JOIN student s
on s.sid=sc.sid
group by sid
having 平均成绩>80;

7.查询所有课程都低于60分的学生姓名和分数

INNER JOIN student s 
on s.sid=sc.sid
group by s.sid
having 分数<60;

8.查询所有学生的选课情况,显示学生的姓名和选修的课程名

INNER JOIN sc 
on s.sid=sc.sid
INNER JOIN course c
on c.cid=sc.cid;

9.查询任何一门课程成绩在70分以上的姓名、课程名称和分数

INNER JOIN student s
on sc.sid=s.sid
INNER JOIN course c
on c.cid=sc.cid
where score>70;

10.查询所有不及格的课程,并按课程号从大到小罗列课程ID和学生ID

INNER JOIN student s
on sc.sid=s.sid
INNER JOIN course c
on c.cid=sc.cid
where score<60 
order by 课程ID desc,学生ID desc;

11.查询课程编号为003且课程成绩在80分以上的学生的学号和姓名

INNER JOIN student s
on sc.sid=s.sid
INNER JOIN course c
on c.cid=sc.cid
where c.cid=003 and score>80;

12.求选全了课程的学生人数
(1)先查所有课程数量

select count(*) from course; 

(2)学员选课数量等于总课程数量

INNER JOIN sc
on sc.sid=s.sid
GROUP BY s.sid
having 选课数=(select count(*) from course);

13.查询选修李老师所授课程的学生中,成绩最高的学生姓名及其成绩

INNER JOIN student s
on sc.sid=s.sid
INNER JOIN course c
on c.cid=sc.cid
INNER JOIN teacher t
on t.tid=c.tid
where tname like '李%'
order by 学生成绩 DESC
limit 2;

14.查询各个课程及相应的选修人数

INNER JOIN course c
on sc.cid=c.cid
group by c.cid;

15.查询不同课程成绩相同的同学的学号、课程号、学生成绩

from sc a
INNER JOIN sc b
on a.score=b.score
where a.cid<>b.cid
order by a.score desc;

16.查询每门功课成绩最好的前两名

where(
select count(*) from sc b
where a.cid=b.cid
and a.score<=b.score
)<=2
order by a.cid;

17.检索至少选修两门课程的学生学号

INNER JOIN sc
on sc.sid=s.sid
GROUP BY s.sid
having 选课数>=2;

18.查询全部学生都选修的课程的课程号和课程名
(1)先查所有学生人数

select count(*) from student; 

(2)学员选课数量等于总人数

INNER JOIN sc
on sc.sid=s.sid
INNER JOIN course c
on c.cid=sc.cid
GROUP BY c.cid
having 选课人数=(select count(*) from student);

相关文章

网友评论

      本文标题:SQL基础知识

      本文链接:https://www.haomeiwen.com/subject/nzbpmctx.html