请登录
四川成人和教育管理有限公司 - 笔记串讲 - 工学类 - 4735数据库系统原理 - 浏览文章

自考4735数据库系统原理考试复习资料5

2016/5/30 17:22:410人浏览0评论

第三种写法(使用存在量词的嵌套查询):

SELECT  S#SNAME

FROM  S

WHERE  EXISTSSELECT  *

                                   FROM  SC

                                   WHERE  SC.S#=S.S#  AND  C#=’C2’

例:对于教学数据库中四个基本表TCSSC,用SELECT语句表示下面查询。

1)检索学习课程号为C2课程的学生学号与成绩。

SELECT  S#,SCORE

FROM SC

WHERE C#=‘C2’

2)检索学习课程号为C2课程的学生学号和姓名。

见上例

    3)检索至少选修LIU老师所授课程中一门课程的学生学号与姓名。

SELECT  S.S#,SNAME

FROM S,SC,C,T

WHERE S.S#=SC.S#  AND SC.C#=C.C# 

AND  C.T#=T.T#  AND  TNAME=’LIU’

    4)检索选修课程号为C2或C4课程的学生学号。

SELECT  S#

FROM  SC

WHERE  C#=’C2’  OR  C#=’C4’

    5)检索至少选修课程号为C2和C4课程的学生学号。

SELECT  X.S#

FROM  SC  AS  X,SC  AS  Y

WHERE  X.S#=Y.S#  AND  X.C#=’C2’  AND  Y.C#=’C4’

    6)检索不学C2课程的学生姓名与年龄。

    SELECT  SNAME,AGE

    FROM  S

    WHERE  S#  NOT  IN(SELECT  S#

                     FROM  SC

                     WHERE  C#=’C2’)

    7)检索学习全部课程的学生姓名。(在表S中找学生,在C中不存在一门课程,这个学生没有学。)

    SELECT  SNAME

    FROM  S

    WHERE  NOT  EXISTS

              (SELECT  *

              FROM  C

              WHERE  NOT  EXISTS

                         (SELECT  *

                         FROM  SC

                         WHERE  SC.S#=S.S#  AND  SC.C#=C.C#))

    8)检索所学课程包含学号为S3学生所学课程的学生学号。(在SC表中找一个学生,不存在S3学的一门课,该学生没有学。)

    SELECT  DISTINCT  S#

    FROM  SC  AS  X

    WHERE  NOT  EXISTS

           (SELECT  *

           FROM  SC  AS  Y

           WHERE  Y.S#=’S3’

           AND  NOT  EXISTS

              (SELECT  *

              FROM  SC  AS  Z

              WHERE  Z.S#=X.S#  AND  Z.C#=Y.C#))

    :DISTINCT表示去掉重复值。

3.聚合函数

COUNT(*):计算元组个数

COUNT(<列名>)  对一列中的值计算个数

SUM(<列名>)    求某一列值的总和(此列值为数值型)

AVG(<列名>)    求某一列值的平均值(此列值为数值型)

MAX(<列名>)      求某一列值的最大值

MIN(<列名>)      求某一列值的最小值

说明:列名前均可加DISTINCT,表示去掉重复值。

例1:求男生的总人数和平均年龄。

    SELECT  COUNT(*),AVG(AGE)

    FROM  S

    WHERE  SEX=‘男’

例2:统计选修了课程的学生人数。

    SELECT  COUNT(DISTINCT  S#)

    FROM  SC

关键字:
网友评论