数据库原理与应用期末复习总结含试题及其答案(3)

2019-05-26 20:23

(11)联接查询:查询时先对表进行笛卡尔积操作,然后再做等值联接、选择、投影等操作。联接查询的效率比嵌套查询低。

(12)交互式SQL:在终端交互方式下使用的SQL语言称为交互式SQL。

(13)嵌入式SQL:嵌入在高级语言的程序中使用的SQL语言称为嵌入式SQL。 (14)共享变量:SQL和宿主语言的接口。共享变量有宿主语言程序定义,再用SQL的DECLARE语句说明, SQL语句就可引用这些变量传递数据库信息。 (15)游标:游标是与某一查询结果相联系的符号名,用于把集合操作转换成单记录处理方式。 (16)卷游标:为了克服游标在推进时不能返回的不便,SQL2提供了卷游标技术。卷游标在推进时不但能沿查询结果中元组顺序从头到尾一行行推进,也能一行行返回。

3.2 对于教学数据库的三个基本表 学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE)

课程 C(C#,CNAME,TEACHER)

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

(1)检索LIU老师所授课程的课程号和课程名。 SELECT C#,CNAME FROM C

WHERE TEACHER=‘LIU’

(2)检索年龄大于23岁的男学生的学号和姓名。 SELECT S#,SNAME FROM S

WHERE (AGE>23) AND (SEX=‘M’)

(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。 SELECT SNAME FROM S

WHERE SEX=‘F’ AND S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# OM C

WHERE TEACHER=‘LIU’)

NOTICE:有多种写法,比如联接查询写法: SELECT SNAME FROM S,SC,C

WHERE SEX=‘F’ AND SC.S#=S.S# AND SC.C#=C.C#

FR

AND TEACHER='LIU' 但上一种写法更好一些。

(4)检索WANG同学不学的课程的课程号。 SELECT C# FROM C

WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN (SELECT S# FROM S

WHERE SNAME='WANG'))

(5)检索至少选修两门课程的学生学号。 SELECT DISTINCT X.SNO FROM SC X,SC Y

WHERE X.SNO=Y.SNO AND X.CNO<>Y.CNO

Notice:对表SC进行自连接,X,Y是SC的两个别名。

(6)检索全部学生都选修的课程的课程号与课程名。 SELECT C#,CNAME FROM C

WHERE NOT EXISTS (SELECT * FROM S

WHERE S# NOT IN (SELECT * FROM SC

WHERE SC.C#=C.C#))

要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学。 其中,“不选这门课的同学”可以表示为:

SELECT *

FROM S

WHERE S# NOT IN

(SELECT *

FROM SC

WHERE SC.C#=C.C#)

或者

SELECT *

FROM S

WHERE NOT EXISTS

(SELECT *

FROM SC

WHERE S.S#=C.S# AND

SC.C#=C.C# )

(7)检索选修课程包含LIU老师所授课的学生学号。 SELECT DISTINCT S# FROM SC WHERE C# IN (SELECT C# FROM C

WHERE TEACHER='LIU'))

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

(1)πA(R) (2)σB='17'(R) (3)R×S (4))πA,F(σC=D(R×S)) (1)SELECT A FROM R

(2)SELECT * FROM R WHERE B='17' (3)SELECT A,B,C,D,E,F FROM R,S

(4)SELECT A,F FROM R,S WHERE R.C=S.D

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

(1)R∪S (2)R∩S (3)R-S (4)πA,B(R)πB,C(S)

(1)SELECT A,B,C FROM R UNION

SELECT A,B,C FROM S

(2)SELECT A,B,C FROM R INTERSECT SELECT A,B,C FROM S

(3)SELECT A,B,C FROM R

WHERE NOT EXISTS (SELECT A,B,C FROM S

WHERE R.A=S.A AND R.B=S.B AND R.C=S.C)

(4)SELECT R.A,R.B,S.C FROM R,S RE R.B=S.B

3.5 试叙述SQL语言的关系代数特点和元组演算特点。 (P61-62)

3.6 试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询:

(1)统计有学生选修的课程门数。

SELECT COUNT(DISTINCT C#) FROM SC

(2)求选修C4课程的学生的平均年龄。 SELECT AVG(AGE) FROM S

WHERE S# IN (SELECT S# FROM SC

WHERE C#='C4') 或者,

SELECT AVG(AGE) FROM S,SC

WHE

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

(3)求LIU老师所授课程的每门课程的学生平均成绩。 SELECT CNAME,AVG(GRADE) FROM SC ,C

WHERE SC.C#=C.C# AND TEACHER='LIU' GROUP BY C#

(4)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 SELECT DISTINCT C#,COUNT(S#) FROM SC GROUP BY C#

HAVING COUNT(S#)>10 ORDER BY 2 DESC, C# ASC

(5)检索学号比WANG同学大,而年龄比他小的学生姓名。 SELECT X.SNAME FROM S AS X, S AS Y

WHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE

(6)检索姓名以WANG打头的所有学生的姓名和年龄。 SELECT SNAME,AGE FROM S

WHERE SNAME LIKE 'WANG%'

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

WHERE GRADE IS NULL

(8)求年龄大于女同学平均年龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X

WHERE X.SEX='男' AND X.AGE>(SELECT AVG(AGE) FROM S AS Y WHERE Y.SEX='女')

(9)求年龄大于所有女同学年龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X

WHERE X.SEX='男' AND X.AGE>ALL (SELECT AGE FROM S AS Y WHERE Y.SEX='女')

3.7 试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作: (1)往基本表S中插入一个学生元组(‘S9’,‘WU’,18)。


数据库原理与应用期末复习总结含试题及其答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于印发《马尔康县食品安全委员会工作规则(试行)》的通知

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: