数据库第三章部分习题答案

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

对于教学数据库的三个基本表

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)

试用SQL的查询语句表达下列查询:

3.2.1检索年龄小于17岁的女学生的学号和姓名

select s#,sname from S

where age<17 and sex=F;

3.2.2检索男生所学课程的课程号和课程名

select c#,cname from C

where c# in (select distinct c#

from SC

where s# in (select s# from S where sex=M))

3.2.3检索男生所学课程的任课老师的工号和姓名

select t#,tname from T

where t# in(select distinct t#

from C

where c# in(select distinct c#

from SC

where s# in(select s#

from S

where sex=1)));

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

select s#

from SC

group by s#.

having count(c#)>=2;

3.2.5检索至少有学号为S2和S4所学的课程和课程名select c#,cname

from C

where c# in((select c#

from sc where s#='S2')

intersect

(select c# from sc where s#='S4') );

3.2.6检索‘WANG'同学不学的课程号

select c# from c

except

(select distinct c#

from sc

where s# =(select s# from s where sname='WANG'));

3.2.7检索全部学生都选修的课程号和课程名

select c#,cname

from c

where not exists(select s#

from s

where # not in (select c# from sc where #=# ));

3.2.8检索选修课程包含'LIU'老师所授课程的全部课程的学生的学号和姓名select s#,sname

from s

where not exists((select c#

from c

where t#=(select t#

from t

where tname='LIU')) except(select c# from sc where #=#) );

设有两个基本表R(A,B,C)和S(A,B,C),试用SQL查询语句表达下列关系代数表达式:

① R∪S ② R∩S ③ R-S ④ R×S ⑤π(R) A,Bπ(S)B,C⑥π(σ(R×S)⑦π(R ⑧ R÷π(S) S) 1,63=43C1,2, 3=3 解:① (SELECT * FROM R)

UNION

(SELECT * FROM S);

② (SELECT * FROM R)

INTERSECT

(SELECT * FROM S);

③ (SELECT * FROM R)

MINUS

(SELECT * FROM S);

④ SELECT *

FROM R, S;

⑤ SELECT , ,

FROM R, S

WHERE =;

⑥ SELECT ,

FROM R, S

WHERE =;

⑦ SELECT R.* (R.*表示R中全部属性)

FROM R, S

WHERE =;

⑧ R÷π(S)的元组表达式如下:C{ t |(?u)(?v)(?w)(R(u)∧ S(v)

∧ R(w)∧ w[1]=u[1] ∧

w[2]=u[2] ∧ w[3]=v[3] ∧ t[1]=u[1] ∧ t[2]=u[2])}

据此,可写出SELECT语句:

SELECT A, B

FROM R RX

WHERE NOT EXISTS

( SELECT *

FROM S

WHERE NOT EXISTS

( SELECT *

FROM R RY

WHERE = AND = AND =);

试叙述SQL语言的关系代数特点和元组演算特点。

答:SQL的关系代数特点如下:

①有关系代数运算的并、交、差、自然联接等运算符;

② FROM子句体现了笛卡尔积操作,WHERE子句体现了选择操作,SELECT子句体现了投影操作。

SQL的元组演算特点如下:

① FROM子句中的基本表名应视为“元组变量”,属性名应视为“元组分量”;

②有存在量词EXISTS符号。

试用SQL更新语句表达对题教学数据库中关系S、SC、C的更新操作:

①往关系C中插一个课程元组('C8','VC++','T6')。

②检索所授每门课程平均成绩均大于80分的教师姓名,并把检索到的值送往另一个已存在的表FACULTY(TNAME)。

③在SC中删除尚无成绩的选课元组。

④把选修LIU老师课程的女同学选课元组全部删去。

⑤把MATHS课不及格的成绩全改为60分。

⑥把低于所有课程总平均成绩的女同学成绩提高5%。

⑦在表SC中修改C4课程的成绩,若成绩小于等于70分时提高5%,若成绩大于70 分时提高4%(用两种方法实现,一种方法是用两个UPDATE语句实现,另一种方法是用带CASE操作的一个UPDATE语句实现)。

⑧在表SC中,当某个成绩低于全部课程的平均成绩时,提高5%。

解:① INSERT INTO C

VALUES('C8','VC++','T6');

② INSERT INTO FACULTY(TNAME)

SELECT DISTINCT TEACHER

FROM (SELECT TEACHER, #, AVG(GRADE)

FROM S, SC

WHERE #=#

GROUP BY TEACHER, #)

AS RESULT(TEACHER, C#, AVG_GRADE) AS X

相关文档
最新文档