• Mysql查询语句练习题


    表结构示意图:

    题目:

    7、查询学过“1”并且也学过编号“2”课程的同学的学号、姓名;

    select student.sid,student.sname from student right join (select New.student_id as ID,count(New.course_id) as Num from (select * from score where course_id=1 or course_id=2) as New group by New.student_id having Num=2) as A on student.sid=A.ID;

    8、查询学过“小多”老师所教的课的同学的学号、姓名;

    1)查询出小多老师的课程数量
    select count(course.cid) as Num from course left join teacher on course.teacher_id=teacher.tid where teacher.tname='小多' group by teacher.tid;
    
    (2)查询出上过小多老师课的学生ID和该学生上过小多老师的课程数量
    select score.student_id,count(score.course_id) from score where score.course_id in (select cid from teacher left join course on teacher.tid=course.teacher_id where teacher.tname='小多') group by score.student_id
    
    (3)连表
    select student.sid,student.sname from student right join (select B.ID_B as ID_A from (select score.student_id as ID_B,count(score.course_id) as NumB from score where score.course_id in (select cid from teacher left join course on teacher.tid=course.teacher_id where teacher.tname='小多') group by score.student_id) as B left join (select count(course.cid) as NumC from course left join teacher on course.teacher_id=teacher.tid where teacher.tname='小多' group by teacher.tid) as C on B.NumB=C.NumC) as A on student.sid=A.ID_A;

    9、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;

    select student.sid,student.sname from student right join (select B.student_id as ID_A from (select student_id,number from score where course_id=1) as B left join (select student_id,number from score where course_id=2) as C on B.student_id=C.student_id where B.number > C.number) as A on student.sid=A.ID_A;

    10、查询有课程成绩小于60分的同学的学号、姓名;

    select sid,sname from student where sid in (select student_id from score where number<60);

    11、查询没有学全所有课的同学的学号、姓名;

    select sid,sname from student where sid not in (select student_id from score group by student_id having count(course_id)=3);

    12、查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名;

    select student.sid,student.sname from student right join (select student_id from score where student_id !=1 and course_id in (select course_id from score where student_id=1) group by student_id) as A on student.sid=A.student_id;

    14、查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名;

    select student.sid,student.sname from student right join (select student_id,count(course_id) from score where student_id !=2 and course_id in (select course_id from score where student_id=2) group by student_id having count(course_id)=(select count(course_id) from score where student_id=2 group by student_id)) as A on student.sid=A.student_id;

    15、删除学习“叶平”老师课的SC表记录;

    delete from score where course_id = (select cid from course left join teacher on course.teacher_id=teacher.tid where teacher.tname='叶平');
  • 相关阅读:
    Mybatis类型转换介绍
    简单的快捷方式
    一位资深程序员大牛给予Java初学者的学习路线建议
    题目1014:排名-----------------------此题是一个坑----------------------------------结构体还是用纯c语言不要夹杂c++
    题目1013:开门人和关门人----没有AC掉
    题目1038:Sum of Factorials
    题目1036:Old Bill------简单的模拟
    九度 题目1031:xxx定律
    九度 题目1020:最小长方形
    九度 题目1006:ZOJ问题-----------------我没有A掉
  • 原文地址:https://www.cnblogs.com/yinwenjie/p/10856662.html
Copyright © 2020-2023  润新知