MySQL数据库实验四:嵌套查询

Posted 黑乌鸦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库实验四:嵌套查询相关的知识,希望对你有一定的参考价值。

实验四          嵌套查询

一、实验目的

掌握SELECT语句的嵌套使用,实现表的复杂查询,进一步理解SELECT语句的高级使用方法。

二、实验环境

 

三、实验示例

1、  查询与“刘晨”在同一个系学习的学生。

      SELECT Sno,Sname,Sdept

           FROM Student

     WHERE Sdept  IN

                  (SELECT Sdept

                   FROM Student

                   WHERE Sname= ‘ 刘晨 ’);

    用自身连接完成

     SELECT  S1.Sno,S1.Sname,S1.Sdept

      FROM     Student S1,Student S2

      WHERE  S1.Sdept = S2.Sdept  AND

                      S2.Sname = ‘刘晨‘;

2、查询选修了课程名为“信息系统”的学生学号和姓名

      SELECT Sno,Sname             ③ 最后在Student关系中

      FROM    Student                   取出Sno和Sname

      WHERE Sno  IN

             (SELECT Sno             ② 然后在SC关系中找出选

              FROM    SC              修了3号课程的学生学号

              WHERE  Cno IN

                     (SELECT Cno           ① 首先在Course关系中找出

                       FROM Course                “信息系统”的课程号,为3号

                       WHERE Cname= ‘信息系统’

                     )

              );

3、检索学C2课程的学号与姓名。

   SELECT S#,SNAME   FROM S

   WHERE S# = SOME(SELECT  S#  FROM SC

                        WHERE C# =‘C2‘);

4、 检索至少有一门成绩超过学生S4一门成绩的学

   生学号。

   SELECT DISTINCT S#   FROM SC

   WHERE SCORE > SOME(SELECT SCORE  FROM SC

                             WHERE S#=‘S4‘);

5、 检索不学C2课程的学生姓名与年龄。

       SELECT SNAME,AGE  FROM S

       WHERE S# <> ALL(SELECT S#  FROM SC

                      WHERE C#= ‘C2‘);

6、 检索平均成绩最高的学生学号。

       SELECT S#  FROM SC

       GROUP BY S#

         HAVING AVG SCORE >=

              ALL(SELECT AVG(SCORE) FROM SC

               GROUP BY S#);

7、查询所有选修了1号课程的学生姓名。

     SELECT Sname

     FROM Student

     WHERE EXISTS

                   (SELECT *

                    FROM SC

                    WHERE Sno=Student.Sno AND Cno= ‘ 1 ‘);

8、  查询没有选修1号课程的学生姓名。

     SELECT Sname

     FROM Student

     WHERE NOT EXISTS

                   (SELECT *

                    FROM SC

                    WHERE Sno = Student.Sno AND Cno=‘1‘);

9、查询选修了全部课程的学生姓名。

        SELECT Sname

        FROM Student

        WHERE NOT EXISTS

                    (SELECT *

                        FROM Course

                        WHERE NOT EXISTS

                                      (SELECT *

                                       FROM SC

                                       WHERE Sno= Student.Sno

                                             AND Cno= Course.Cno

                                       )

                       );

  四、实验内容与步骤

 

1、检索WANG同学不学的课程的课程号。

2、 检索学号比WANG同学大,而年龄比他小的学生姓名。

3、 求年龄大于女同学平均年龄的男学生姓名和年龄。

4、 求年龄大于所有女同学年龄的男学生姓名和年龄。

5、检索全部学生都选修的课程的课程号与课程名。

6、检索选修课程包含LIU老师所授课程的学生学号。

以上是关于MySQL数据库实验四:嵌套查询的主要内容,如果未能解决你的问题,请参考以下文章

《零基础入门MySQL数据库》专栏简介

数据库实验(学生选课系统)

数据库原理与应用实验4--[数据库的嵌套查询]

数据库---实验三 嵌套查询和视图操作

实验四 数据库查询

实验四 (附加1)