• 数据库练习二


     1 #查询所有的课程的名称以及对应的任课老师姓名
     2 SELECT cname '课程',TNAME '教师名' FROM COURSE C,TEACHER T WHERE C.teacher_id=T.tid; 
     3 
     4 #查询学生表中男女生各有多少人
     5 SELECT GENDER '性别',COUNT(GENDER) '人数' FROM STUDENT1 GROUP BY(GENDER);
     6 
     7 #查询物理成绩等于100的学生的姓名
     8 SELECT SNAME '姓名',CNAME '课程',NUM '分数' from STUDENT1 S,COURSE C,SCORE1 SC WHERE S.sid=SC.student_id AND C.cid=SC.course_id AND CNAME='物理' AND NUM=100;
     9 
    10 #查询平均成绩大于八十分的同学的姓名和平均成绩
    11 SELECT SNAME '姓名',AVG(NUM) '平均分' FROM STUDENT1 S,SCORE1 SC WHERE S.sid=SC.student_id GROUP BY(SNAME) HAVING AVG(NUM)>80;
    12 
    13 #查询所有学生的学号,姓名,选课数,总成绩
    14 SELECT S.SID '学号',SNAME '姓名',COUNT(course_id) '选课数',SUM(NUM) '总成绩' FROM STUDENT1 S,SCORE1 SC WHERE S.sid=SC.student_ID GROUP BY(student_ID);
    15 
    16 #查询姓李老师的个数
    17 SELECT COUNT(TNAME) '个数' FROM TEACHER WHERE TNAME LIKE '李%';
    18 
    19 #查询没有报李平老师课的学生姓名
    20 select sname from student1 where sid not in(select student_id from score1 where course_id in(select course_id from course where teacher_id=(select tid from teacher where tname='李平老师')));
    21 
    22 #查询物理课程比生物课程高的学生的学号
    23 select S1.student_id '学号' from (select student_id,num from score1 WHERE course_id=(select cid from course where cname='物理'))AS S1,(select student_id,num from score1 WHERE course_id=(select cid from course where cname='生物'))AS S2 WHERE S1.student_id=S2.student_id AND S1.num>S2.num; 
    24 
    25 #查询没有同时选修物理课程和体育课程的学生姓名
    26 SELECT SNAME '姓名' FROM STUDENT1 WHERE sid NOT IN(SELECT student_id FROM SCORE1 WHERE student_id IN(SELECT student_id FROM SCORE1 WHERE course_id=(SELECT cid FROM course WHERE CNAME='物理')) AND course_id=(SELECT cid FROM course WHERE CNAME='体育'));
    27 
    28 #查询挂科超过两门(包括两门)的学生姓名和班级
    29 SELECT SNAME '姓名',caption '班级' FROM student1 S,CLASS C,score1 S1 WHERE S.class_id=C.cid AND S.sid=S1.student_id AND student_id IN(SELECT student_id FROM score1 WHERE NUM<60) HAVING COUNT(student_id); 
    30 
    31 #查询选修了所有课程的学生姓名
    32 SELECT SNAME '姓名' FROM STUDENT1 WHERE SID IN(SELECT student_id FROM SCORE1 GROUP BY(student_id) HAVING COUNT(course_id) = (SELECT count(cid) FROM course));
    33 
    34 #查询李平老师教的课程的所有成绩记录
    35 SELECT NUM '成绩' FROM score1 WHERE course_id IN(SELECT cid FROM course WHERE teacher_id=(SELECT TID FROM TEACHER WHERE TNAME='李平老师'));
    36 
    37 #查询全部学生都选修了的课程号和课程名
    38 SELECT CID '课程号',CNAME '课程名' FROM course WHERE CID IN(SELECT course_id FROM score1 GROUP BY(course_id) HAVING COUNT(student_id)=(SELECT count(Sid) FROM STUDENT1));
    39 
    40 #查询每门课程被选修的次数
    41 SELECT course_id '课程号',COUNT(student_id) '次数' FROM score1 GROUP BY(course_id);
    42 
    43 #查询只选修了一门课程的学生姓名和学号
    44 SELECT SNAME '姓名',SID '学号' FROM STUDENT1 WHERE SID IN(SELECT student_id FROM score1 GROUP BY(student_id) HAVING COUNT(course_id)=1);
    45 
    46 #查询所有学生考出的成绩并按从高到低排序(成绩去重)
    47 SELECT DISTINCT NUM FROM score1 ORDER BY NUM DESC;
    48 
    49 #查询平均成绩大于85的学生姓名和平均成绩
    50 SELECT SNAME '姓名',AVG(NUM) '平均分' FROM STUDENT1 S,score1 SC WHERE S.sid=SC.student_id AND S.SID IN(SELECT student_id FROM score1 GROUP BY(student_id) HAVING AVG(NUM)>85);
    51 
    52 #查询生物成绩不及格的学生姓名和对应生物分数
    53 SELECT SNAME '姓名',NUM '分数' FROM STUDENT1 S,score1 SC,course C WHERE S.sid=SC.student_id AND SC.course_id=C.cid AND c.cname = '生物' AND sc.num < 60;
    54 
    55 #查询在所有选修了李平老师课程的学生中,这些课程(李平老师的课程,不是所有课程)平均成绩最高的学生姓名
    56 SELECT SNAME '姓名' FROM STUDENT1 WHERE sid=(SELECT student_id FROM score1 WHERE course_id IN(SELECT CID FROM course WHERE teacher_id IN(SELECT TID FROM TEACHER WHERE TNAME='李平老师')) GROUP BY(student_id) ORDER BY AVG(num) DESC LIMIT 1);
    57 
    58 #查询每门课程成绩最好的前两名学生姓名
    59 SELECT
    60     SNAME '姓名',S.SID '学号',NUM '分数' 
    61 FROM
    62     student1 S
    63     JOIN (
    64     (SELECT * FROM score1 WHERE course_id = 1 ORDER BY NUM DESC LIMIT 2 ) UNION
    65     ( SELECT * FROM score1 WHERE course_id = 2 ORDER BY NUM DESC LIMIT 2 ) UNION
    66     ( SELECT * FROM score1 WHERE course_id = 3 ORDER BY NUM DESC LIMIT 2 ) UNION
    67     ( SELECT * FROM score1 WHERE course_id = 4 ORDER BY NUM DESC LIMIT 2 )) 
    68     AS a WHERE s.sid=a.student_id;
    69 
    70 #查询不同课程但成绩相同的学号,课程号,成绩
    71 select DISTINCT S.SID,SC.course_id '课程号',SC.NUM '分数' FROM STUDENT1 S,score1 SC,score1 SC1 WHERE S.sid=SC.student_id AND SC.course_id<>SC1.course_id AND SC.num=SC1.num ORDER BY SC.NUM DESC,SC.course_id;
    72 
    73 #查询没学过“叶平”老师课程的学生姓名以及选修的课程名称;
    74 SELECT S.SNAME '姓名', GROUP_CONCAT(C.cname) '课程名' FROM  student1 S, course C,score1 SC,teacher T WHERE S.sid=SC.student_id AND SC.course_id=C.cid AND C.teacher_id=T.tid AND tid NOT IN(SELECT tid FROM teacher WHERE tname='叶平%') GROUP BY s.sname;
    75 
    76 #查询所有选修了学号为1的同学选修过的一门或者多门课程的同学学号和姓名;
    77 select  SID '学号',SNAME '姓名' FROM STUDENT1 WHERE sid IN(SELECT student_id FROM score1 WHERE course_id IN(SELECT cid FROM course WHERE cid=1));
    78 
    79 #任课最多的老师中学生单科成绩最高的学生姓名
    80 SELECT ST.sname,MAX(SC.num) FROM student1 ST,score1 SC WHERE ST.sid=SC.student_id and course_id=(select a.cid from (SELECT *,COUNT(teacher_id) from course GROUP BY(teacher_id) ORDER BY COUNT(teacher_id) desc LIMIT 1)AS a);
    数据库练习二
  • 相关阅读:
    vector族函数
    (2)apply函数及其源码
    Eclipse如何修改默认工作空间路径
    怎么将码云的项目导入到eclipse
    在cmd中使用vim编译器
    win8中让cmd.exe始终以管理员身份运行
    cmd命令配置MySQL
    conda的一些指令
    今天遇到的“OS ERROR, permission denied” 如何解决的
    linux的环境变量
  • 原文地址:https://www.cnblogs.com/Dean-0/p/11375131.html
Copyright © 2020-2023  润新知