MySQL-习题 下

/*查询每门课的平均成绩*/
SELECT cno,AVG(degree) FROM score GROUP BY cno;
/*查询Score表中至少有5名学生选修的并以3开头的课程的平均分数*/
SELECT AVG(degree) FROM score WHERE cno=(
      SELECT cno FROM score GROUP BY cno
     HAVING COUNT(*)>5 AND cno LIKE '3%'
)
/*查询分数大于70,小于90的Sno列*/
SELECT sno FROM score WHERE degree>70 AND degree<90;
/*查询所有学生的Sname、Cno和Degree列*/
SELECT sname,cno,degree FROM score JOIN student ON score.`sno`=student.sno;
/*查询所有学生的Sno、Cname和Degree列*/
SELECT student.sno,cname,degree FROM score JOIN student ON score.`sno`=student.`sno` JOIN course ON score.`cno`=course.`cno`
/*查询所有学生的Sname、Cname和Degree列*/
SELECT sname,cname,degree FROM score JOIN student ON score.`sno`=student.`sno` JOIN course ON score.`cno`=course.`cno` 
/*查询“95033”班学生的平均分*/
SELECT AVG(degree) FROM score JOIN student ON score.`sno`=student.`sno` GROUP BY class
     HAVING class='95033'
/*查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录*/
SELECT * FROM score JOIN student ON score.`sno`=student.`sno`
      WHERE degree>(SELECT degree FROM score WHERE sno='109' AND cno='3-105') AND cno='3-105';
/*查询score中选学多门课程的同学中分数为非最高分成绩的记录*/
SELECT * FROM score GROUP BY sno
     HAVING degree NOT IN (
        SELECT MAX(degree) FROM score GROUP BY cno
                   )
/*查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列*/
SELECT sno,sname,sbirthday FROM student WHERE sbirthday LIKE '1977%';
/*查询“张旭“教师任课的学生成绩(姓名)*/
SELECT sno,degree FROM score WHERE cno=(
     SELECT cno FROM course WHERE tno=(
              SELECT tno FROM teacher WHERE teacher.`tname`='张旭'
)
)
/*查询考计算机导论的学生成绩*/
SELECT sno,degree FROM score JOIN course ON score.`cno`=course.`cno`
     WHERE cname='计算机导论'
/*查询李诚老师教的课程名称*/
SELECT cname FROM course WHERE tno=(
               SELECT tno FROM teacher WHERE tname='李诚'
)
/*教高等数学的老师是哪个系的*/
SELECT depart FROM teacher WHERE tno=(
         SELECT tno FROM course WHERE cname='高等数学'
         )
/*查询选修某课程的同学人数多于5人的教师姓名*/
SELECT teacher.`tname` FROM course JOIN teacher ON course.`tno`=teacher.`tno`
                         WHERE cno = (
                         SELECT course.cno FROM score JOIN student ON score.`sno`=student.`sno`
                                                               JOIN course ON score.`cno`=course.`cno`  
                                                               GROUP BY course.`cno`
                                                               HAVING COUNT(*)>5     
                         )
/*查询95033班和95031班全体学生的记录*/
SELECT * FROM score JOIN student ON score.`sno`=student.`sno`
                    JOIN course ON score.`cno`=course.`cno`   
/*查询存在有85分以上成绩的课程Cno*/
SELECT course.cno FROM score JOIN course ON score.`cno`=course.`cno` WHERE degree>85
/*查询出“计算机系“教师所教课程的成绩表*/
SELECT degree FROM score WHERE cno IN(
                  SELECT cno FROM course JOIN teacher ON course.`tno`=teacher.`tno` WHERE depart='计算机系'
)
/*查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学
 的Cno、Sno和Degree,并按Degree从高到低次序排序*/
SELECT * FROM score WHERE cno='3-105' AND degree>(
            SELECT MAX(degree) FROM score WHERE cno='3-245'
               ) ORDER BY degree DESC
/*查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学
 的Cno、Sno和Degree*/
SELECT * FROM score WHERE cno='3-105' AND degree>(
            SELECT MAX(degree) FROM score WHERE cno='3-245'
               )       
/*查询所有教师和同学的name、sex和birthday*/
SELECT * FROM student JOIN score ON student.`sno`=score.`sno`
                                       JOIN course ON score.`cno`=course.`cno`
                                       JOIN teacher ON course.`tno`=teacher.`tno`
 SELECT * FROM student
/*查询所有“女”教师和“女”同学的name、sex和birthday*/ 
SELECT * FROM score JOIN student ON score.`sno`=student.`sno`
                                       JOIN course ON score.`cno`=course.`cno`
                                       JOIN teacher ON course.`tno`=teacher.`tno`
                                       WHERE (ssex=''AND tsex<>'') OR (tsex='' AND ssex<>'')
/*查询成绩比该课程平均成绩低的同学的成绩表*/
SELECT * FROM score WHERE (cno='3-105'AND degree<(SELECT AVG(degree) FROM score GROUP BY cno HAVING cno='3-105')) 
                   OR(cno='3-245'AND degree<(SELECT AVG(degree) FROM score GROUP BY cno HAVING cno='3-245'))
                    OR(cno='6-166'AND degree<(SELECT AVG(degree) FROM score GROUP BY cno HAVING cno='6-166'))
/*查询所有任课教师的Tname和Depart*/
SELECT tname,depart FROM course JOIN teacher ON course.`tno`=teacher.`tno`
/*查询所有未讲课的教师的Tname和Depart*/
SELECT tname,depart FROM teacher WHERE teacher.`tno` NOT IN (
                       SELECT course.`tno` FROM course JOIN teacher ON course.`tno`=teacher.`tno`
)
/*查询至少有2名男生的班号*/
SELECT class FROM student GROUP BY class
              HAVING COUNT(*)>=2
/*查询Student表中不姓“王”的同学记录*/
SELECT * FROM student WHERE sname NOT IN (
            SELECT sname FROM student WHERE sname LIKE '王%'
)
/*查询Student表中每个学生的姓名和年龄*/
SELECT sname,YEAR(NOW())-YEAR(sbirthday) AS age FROM student
/*查询Student表中最大和最小的Sbirthday日期值*/
SELECT MAX(sbirthday),MIN(sbirthday) FROM student
/*以班号和年龄从大到小的顺序查询Student表中的全部记录*/
SELECT class,YEAR(NOW())-YEAR(sbirthday) AS age FROM student ORDER BY class ASC,age ASC                                   
/*查询“男”教师及其所上的课程*/
SELECT tname,cname FROM course JOIN teacher ON course.`tno`=teacher.`tno` WHERE teacher.`tsex`=''               
/*查询最高分同学的Sno、Cno和Degree列*/
SELECT student.sno,cno,degree FROM score JOIN student ON score.`sno`=student.`sno`
                      WHERE degree=(
                          SELECT MAX(degree) FROM score                      
                      )
/*查询和“李军”同性别的所有同学的Sname*/
SELECT sname FROM student WHERE ssex=(
          SELECT ssex FROM student WHERE sname='李军'
)
/*查询和“李军”同性别并同班的同学Sname*/
SELECT sname FROM student WHERE ssex=(SELECT ssex FROM student WHERE sname='李军') AND class=(SELECT class FROM student WHERE sname='李军')
/*查询所有选修“计算机导论”课程的“男”同学的成绩表*/
SELECT * FROM score JOIN student ON score.`sno`=student.`sno` JOIN course ON score.`cno`=course.`cno`

猜你喜欢

转载自www.cnblogs.com/yelena-niu/p/9006966.html