sql测试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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='女')