北大“數(shù)據(jù)庫原理”上機(jī)實(shí)踐題目總結(jié)(16)

字號(hào):

2. 往表中插入數(shù)據(jù):
    運(yùn)動(dòng)員((1001, 李明,男,計(jì)算機(jī)系)
    1002,張三,男,數(shù)學(xué)系
    1003, 李四,男,計(jì)算機(jī)系
    1004, 王二,男,物理系
    1005, 李娜,女,心理系
    1006, 孫麗,女,數(shù)學(xué)系)
    項(xiàng)目( x001, 男子五千米,一操場(chǎng)
    x002,男子標(biāo)槍,一操場(chǎng)
    x003, 男子跳遠(yuǎn),二操場(chǎng)
    x004, 女子跳高,二操場(chǎng)
    x005, 女子三千米,三操場(chǎng))
    積分( 1001, x001, 6
    1002, x001, 4
    1003, x001, 2
    1004, x001, 0
    1001, x003, 4
    1002, x003, 6
    1004, x003, 2
    1005, x004, 6
    1006, x004, 4)
    3. 完成如下查詢
    athlete(a#,aname,sex,dno)
    project(p#,pname,address)
    grade(a#,p#,jf)
    找出參加了張三所參加的所有項(xiàng)目的其他同學(xué)的姓名
    SELECT ANAME
    FROM W193_ATHLETE Y
    WHERE NOT EXISTS
    (SELECT * FROM W193_GRADE X
    WHERE A# IN
    (SELECT A# FROM W193_GRADE
    WHERE A# IN (SELECT A# FROM W193_ATHLETE WHERE ANAME='張三' )
    )
    AND NOT EXISTS
    (SELECT * FROM W193_GRADE WHERE A#=Y.A# AND P#=X.P# )
    )
    a) 求出目前總積分的系名,及其積分。
    SELECT DNO,SUM(JF) AS JF
    FROM W193_GRADE X,W193_ATHLETE Y
    WHERE X.A#=Y.A#
    GROUP BY DNO
    HAVING SUM(JF)>=ALL
    (SELECT SUM(JF)
    FROM W193_GRADE X,W193_ATHLETE Y
    WHERE X.A#=Y.A#
    GROUP BY DNO
    )
    b) 找出在一操場(chǎng)進(jìn)行比賽的各項(xiàng)目名稱及其冠軍的姓名
    SELECT PNAME,ANAME
    FROM W193_ATHLETE X, W193_GRADE Y, W193_PROJECT Z
    WHERE X.A#=Y.A# AND Z.P#=Y.P# AND
    ADDRESS='一操場(chǎng)' AND JF>=ALL(SELECT MAX(JF) FROM W193_GRADE
    WHERE P# IN (SELECT P# FROM W193_PROJECT WHERE ADDRESS='一操場(chǎng)')
    GROUP BY P#)
    c) 找出參加了張三所參加的所有項(xiàng)目的其他同學(xué)的姓名
    SELECT ANAME
    FROM W193_ATHLETE Y
    WHERE A# NOT IN (SELECT A# FROM W193_ATHLETE WHERE ANAME='張三')
    AND NOT EXISTS
    (SELECT * FROM W193_GRADE X
    WHERE A# IN
    (SELECT A# FROM W193_GRADE
    WHERE A# IN (SELECT A# FROM W193_ATHLETE WHERE ANAME='張三' )
    )
    AND NOT EXISTS
    (SELECT * FROM W193_GRADE WHERE A#=Y.A# AND P#=X.P# )
    )