数据库_第四章习题参考解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章 习题参考解答

4.2 题 对于教学数据库的 3 个基本表:

S (SNO , SNAM ,E AGE ,SEX ,SDEPT ) SC (SNO ,CNO ,

GRAD )E C (CNO , CNAM ,E CDEPT ,TNAM )E

SQL 的查询语句表达下列查询: 检索 LIU 老师所授课程的课程号和课程名。 检索年龄大于 23 岁的男同学的学号和姓名。 检索学号为 S3 的 学生呢个所学课程的课程名和任课教师名。 检索至少选修 LIU 老师所授课程中一门课程的女学生姓名。 检索WAN 同学不学的课程的课程号。

检索至少选修两门课程的学生学号。 检

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

程的学生学号。 WHERE TNAME= ‘LIU ';

2) SELECT SNO ,SNAME

FROM S

WHERE AGE>23 AND SEX= ‘M ';

3) SELECT CNAM ,ETNAME

FROM C WHERE CNO IN

( SELECE CNO

FROM SC

WHERE SNO=

4) 联接查询方式

SELECT SNAME

FROM S ,SC , C

WHERE = AND = AND SEX=

嵌套查询方式: SELECT SANME

SELECT SNO

FROM SC

WHERE CNO IN

(SELECT CNO

FROM C

WHERE TNAME= ' LIU '));

存在量词方式:

SELECT SNAME

试用

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8) 解: ( 1) SELECT CNO CNAME FROM C

'S3'));

'F ' AND TNAME='LIU '; FROM S

WHERE SEX= ' F ' AND SNO IN

FROM S WHERE SEX '= F ' AND EXISTS

SELECT * FROM SC

WHERE SNO= AND EXISTS

FROM C

WHERE CNO=

AND TNAME= 'LIU '));

SELECT CNO

FROM C

WHERE CNO NOT IN

SELECT CNO

FROM SC

WHERE SNO IN

SELECT SNO

FROM S

SELECT DISTINCT

FROM SC X

WHERE SNO IN

SELECT SNO

FROM SC Y

WHERE = AND =);

方法(二):

SELECT SNO

FROM SC

GROUP BY SNO

HAVING COUNT ( * ) >=2;

SELECT CN ,O CNAME

FROM C

WHERE NOT EXISTS

(SELECT *

FROM S

WHERE NOT EXISTS

(SELECT *

FROM SC

FROM SC X

WHERE NOT EXISTS

SELECT *

FROM C

SELECT *

FROM SC Y

WHERE = AND =));

4. 6题 试用SQL 查询语句表达下列对数据库中 3个基本表S 、SC C 的查询。 (

1) 统计有学生SELECT *

WHERE TNAME= 'LIU ' AND NOT EXISTS

WHERE SNAME= ' WAN 'G ));

6) 方法(一):

7) WHERE = AND = ));

8) SELECT DISTINCT SNO

选修的课程门数。

2)

3)

4) (5

)(6)(7)(8)(9)求选修C4 课程的学生的平均年龄。

求LIU 老师所授课程的每门课程的学生平均成绩。

统计每门课程的学生选修人数(超过10 人的课程才统计) 。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

检索学号比WAN(同学大,而年龄比他小的学生姓名。检索姓名以WANG丁头的所有学生的姓名和年龄。

在SC中检索成绩为空值的学生学号和课程名。求年龄大于女同学平均年龄的男同学姓名和年龄。求年龄大于所有女同学年龄的男同学姓名和年龄。

解:(1)SELECT COUNTDISTINCT CNQ

FROM SC ;

2)SELECT AVG

(AGE) FROM S

WHERE SNO IN

(SELECT SNO

FROM SC

WHERE CNO= ‘ C4');

(3)SELECT CN,O AVG(GRAD)E

FROM SC

WHERE CNO IN

(SELECT CNO

FROM C

WHERE TNAME= LIU')GROUP BY CNO

(4)SELECT CNO,COUN(T SNO)

FROM SC

GROUP BY CNO

HAVING COUNT (*)>10

ORDER BY 2 DESC ,CNO;

(5)方法(一):

SELECT

FROM S X ,S Y

WHERE = ‘ WAN'G AND > AND <;

方法(二):

SELECT SNAME

FROM S

WHERE SNO>( SELECT SNO

FROM S

WHERE SNAM'EW=AN'G)AND AGE<( SELECT AGE

FROM S

WHERE SNAME= 6)SELECT SNAME,AGE FROM S WAN'G );

WHERE SNAME LINGK ‘ WA N G'%;7)SELECT SNO,CNO

相关文档
最新文档