sql测试题

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

学校图书馆借书信息管理系统三个表:

学生信息表:student

字段名称数据类型说明stuID char(10) 学生编号,主键

stuName Varchar(10) 学生名称

major Varchar(50) 专业

图书表:book

字段名称数据类型说明BID char(10) 图书编号,主键

title char(50) 书名

author char(20) 作者

借书信息表:borrow

字段名称数据类型说明borrowID char(10) 借书编号,主键

stuID char(10) 学生编号,外键

BID char(10) 图书编号,外键

T_time datetime 借书日期

B_time datetime 还书日期请编写SQL语句完成以下的功能:

1)查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、

学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:

2)查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:

3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;

参考查询结果如下图所示:

4)查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所

示:

1、检索刘老师所授课程的课程号和课程名,代码及结果如下:

SELECT C#,CNAME FROM C

WHERE TEACHER = '刘老师'

2、检索年龄大于23岁的男学生的学号和姓名,代码及结果如下:

SELECT S#,SNAME FROM S

WHERE AGE>23

3. 检索学号为S3学生所学课程的课程名与任课教师名,代码及结果如下:

SELECT CNAME,TEACHER FROM C,SC

WHERE S# IN ('040405028 ')AND C.C#=SC.C#

4、检索至少选修刘老师所授课程中一门课程的女学生姓名,代码及结果如下:

SELECT SNAME FROM S

WHERE S# IN (SELECT S# FROM SC,C WHERE SC.C#=C.C# AND TEACHER='刘老师')

AND SEX='女'

5、检索姓张的同学不学的课程的课程号,代码及结果如下:SELECT C# FROM C

WHERE C# NOT IN (SELECT SC.C# FROM SC,C,S WHERE SC.C#=C.C# AND S.S#=SC.S# AND SNAME LIKE '张%')

6、检索至少选修两门课程的学生学号,代码及结果如下:

SELECT S# FROM SC

GROUP BY S#

HAVING COUNT(*)>=2

7、检索全部学生都选修的课程的课程号与课程名,代码及结果如下:SELECT C#, CNAME

FROM C

WHERE NOT EXISTS

(SELECT *

FROM S

WHERE NOT EXISTS

(SELECT *

FROM SC

WHERE S#=S.S# AND C#=C.C#))

8、检索选修课程包含刘老师所授课程的学生学号,代码及结果如下:SELECT DISTINCT S#

FROM SC AS X

WHERE NOT EXISTS

(SELECT *

FROM C

WHERE TEACHER='刘老师'

AND NOT EXISTS

(SELECT *

FROM SC AS Y

WHERE Y.S#=X.S# AND Y.C#=C.C#))

9、在表C中统计开设课程的教师人数,代码及结果如下:

SELECT COUNT(DISTINCT TEACHER) FROM C

10、求选修042077课程的女学生的平均年龄,代码及结果如下:

SELECT AVG(AGE)

FROM S, SC

WHERE S.S#=SC.S# AND C#='042077 ' AND SEX='女'

11、求刘老师所授课程的每门课程的平均成绩,代码及结果如下:

SELECT C.C#,AVG(GRADE)

FROM SC,C

WHERE SC.C#=C.C# AND TEACHER='刘老师'

GROUP BY C.C#

12、统计每个学生选修课程的门数(超过5门的学生才统计)。要求输出学生学号和选修门数,查询结果按门数降序排列,若门数相同,按学号升序排列。SELECT S#, COUNT(C#),代码及结果如下:

FROM SC

GROUP BY S#

HAVING COUNT(*)>5

ORDER BY 2 DESC, 1

13、检索学号比张波同学大,而年龄比他小的学生姓名,代码及结果如下:SELECT SNAME

FROM S

WHERE S#>ALL(SELECT S#

FROM S

WHERE SNAME = '张波')

AND AGE

FROM S

WHERE SNAME = '张波')

14、在表SC中检索成绩为空值的学生学号和课程号,代码及结果如下:SELECT S#, C#

FROM SC

WHERE GRADE IS NULL

15、检索姓名以姓张的所有学生的姓名和年龄,代码及结果如下:SELECT SNAME, AGE

FROM S

WHERE SNAME LIKE '张%'

16、求年龄大于女同学平均年龄的男学生姓名和年龄,代码及结果如下:SELECT SNAME, AGE

FROM S

WHERE SEX='男'

AND AGE>(SELECT AVG(AGE)

FROM S

WHERE SEX='女')

17、求年龄大于所有女同学年龄的男学生姓名和年龄,代码及结果如下:SELECT SNAME,AGE

FROM S

WHERE SEX='男'

AND AGE>ALL(SELECT AGE

FROM S

WHERE SEX='女')

相关文档
最新文档