好文档 - 专业文书写作范文服务资料分享网站

数据库习题作业

天下 分享 时间: 加入收藏 我要投稿 点赞

v1.0 可编辑可修改

【】设教学数据库中有4个关系: 教师关系 T(T#,TNAME,TITLE) 课程关系C(C#,CNAME,T#) 学生关系S(S#,SNAME,AGE,SEX) 选课关系 SC(S#,C#,SCORE) 试用SQL查询语句表示下列查询。 解:

①检索年龄小于17岁的女学生的学号和姓名。 SELECT S#.SNAME FROM S

WHERE AGE<17 AND SEX=’F’

②检索男学生所学课程的课程号和课程名。 SELECT C.C#,CNAME (连接查询方式) FROM S,SC,C

WHERE S.S#=# AND #=# AND SEX=’M’; ③检索男学生所学课程的任课老师的工号和姓名。 SELECT #, TNAME FROM S,SC,C,T 6

v1.0 可编辑可修改 WHERE #=# AND #=# AND #=# AND SEX=’M’; ④检索至少选修两门课程的学生学号。 SELECT DISTINCT # FROM SC AS X, SC AS Y WHERE #=# AND #!=#;

⑤检索至少有学号为S2和S4的学生选修的课程的课程号。 SELECT DISTINCT # FROM SC AS X, SC AS Y

WHERE #=’S2’ AND #=’S4’ AND #=#; ⑥检索WANG同学不学的课程的课程号。 SELECT C# FROM C

WHERE NOT EXISTS (SELECT * FROM S, SC

WHERE #=# AND #=# AND SNAME=’WANG’); ⑦检索全部学生都选修的课程的课程号与课程名。 SELECT C#,CNAME FROM C

WHERE NOT EXISTS (SELECT * FROM S

WHERE NOT EXISTS (SELECT * FROM SC

WHERE S#=# AND C#=#));

⑧检索选修课程包含LIU老师所授全部课程的学生学号。 7

v1.0 可编辑可修改 法一:

SELECT DISTINCT S# FROM SC AS X WHERE NOT EXISTS (SELECT * FROM C,T

WHERE #=# AND TNAME=’LIU’ AND NOT EXISTS (SELECT{ FROM SC AS Y

WHERE #=# AND #=#)); 法二:

SELECT DISTINCT S# FROM SC X WHERE NOT EXISTS ((SELECT C# FROM C,T WHERE #=# AND TNAME='LIU’) EXCEPT

(SELECT C# FROM SC Y WHERE #=#));

【3.7】试用SQL查询语句表达下列对第3.2题中4个基本表T、C、S、SC的查询。 ①统计有学生选修的课程门数。 SELECT COUNT(DISTINCT C#) FROM SC; ②求选修C4课程的女学生的平均年龄。 SELECT AVG(AGE) FROM S,SC

WHERE S.S#=SC.S# AND C#=’C4’ AND SEX=’F’: 8

v1.0 可编辑可修改 ③求LIU老师所授的每门课程的平均成绩。 SELECT C.C#.AVG(SCORE) FROM SC,C,T

WHERE SC.C#=C.C# AND C.T#=T.T# AND TNAME=’LIU’ GROUP BY C.C#;

④统计选修每门课程的学生人数(超过l0人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,则按课程号升序排列。 SELECT C#.COUNT(S#) FROM SC GROUP BY C# HAVING COUNT(*)>10 ORDER BY 2 DESC,1;

⑤检索学号比WANG同学大,而年龄比他小的学生姓名。 SELECT SNAME FROM S

WHERE S#>ALL(SELECT S# FROM S WHERE SNAME=’WANG’) AND AGE

WHERE SNAME=’WANG);

⑥在表SC中检索成绩为空值的学生的学号和课程号。 SELECT S#, C# FROM SC

WHERE SCORE IS NULL;

⑦检索姓名以L开头的所有学生的姓名和年龄。 SELECT SNAME, AGE FROM S 9

v1.0 可编辑可修改 WHERE SNAME LIKE ’L%’;

⑧求年龄大于女同学平均年龄的男学生的姓名和年龄。 SELECT SNAME, AGE FROM S

WHERE SEX=’M’

AND AGE>(SELECT AVG(AGE) FROM S

WHERE SEX=’F’);

⑨求年龄大于所有女同学年龄的男学生的姓名和年龄。 SELECT SNAME, AGE FROM S

WHERE SEX=‘M’ AND AGE>ALL(SELECT AGE FROM S

WHERE SEX=’F’);

【3.12】 解:

①INSERT INTO C

VALUES(‘C8’,’VC++’,’T6’); ② 法一:

INSERT INTO FACULTY(TNAME) SELECT DISTINCT TNAME

FROM (SELECT TNAME,C.C#,AVG(SCORE) FROM T, C, SC 10

数据库习题作业

v1.0可编辑可修改【】设教学数据库中有4个关系:教师关系T(T#,TNAME,TITLE)课程关系C(C#,CNAME,T#)学生关系S(S#,SNAME,AGE,SEX)选课关系SC(S#,C#,SCORE)试用SQL查询语句表示下列查询。解:①检索年龄小于17岁的女学生的学号和姓名。SELECTS#
推荐度:
点击下载文档文档为doc格式
67zby5z6if3z01x0bvw21wxgu8k84a00nbo
领取福利

微信扫码领取福利

微信扫码分享