问答题 设在采用SQL Server 2008数据库的图书馆应用系统中有三个基本表,表结构如下所示,请用SQL语句完成下列两个查询:
BORROWER:
借书证号 姓名 系名 班级
12011106 蒋辉文 计算机系 12-1
12011107 王丽 计算机系 12-1
12012113 范园园 信息系 12-2
…… …… …… ……
LOANS:
借书证号 图书馆登记号 借书日期
12011106 T001001 2012.01.02
12012113 T001026 2013.02.06
…… …… ……
BOOKS:
索书号 书名 作者 图书登记号 出版社 价格
TP311.1 数据库系统 李明 T001001 科学 19.00
TP311.2 二级C语言 王珊 T001026 人民 32.00
…… …… …… …… …… ……
问答题 检索至少借了5本书的同学的借书证号、姓名、系名和借书数量。
【正确答案】
【答案解析】SELECT LOANS.借书证号,姓名,系名,COUNT(*)AS借书数量
FROM BORROWER,LOANS
WHERE BORROWER.借书证号=LOANS.借书证号
GROUP BY LOANS.借书证号
HAVINC COUNT(*)>=5; [解析] 采用两表联合查询。以两表“借书证号”为相等条件,在结果集中用GROUP BY按照“借书证号”来分类,并且用HAVING关键字统计出符合条件的记录数。
问答题 检索借书和王丽同学所借图书中的任意一本相同的学生姓名、系名、书名和借书日期。
【正确答案】
【答案解析】SELECT姓名,系名,书名,借书日期
FROM BORROWER,LOANS,BOOKS
WHERE
BORROWER.借书证号=LOANS.借书证号AND LOANS.图书登记号=BOOKS.图书登记号
AND索书号IN
(
SELECT索书号FROM BORROWER,LOANS,BOOKS
WHERE BORROW.借书证号=LOANS.借书证号
AND LOANS.图书馆登记号=BOOKS.图书登记号
AND姓名="王丽"
) [解析] 采用IN关键字进行两表联合查询,在BORROWER和LOANS联合的结果集中查找满足第三个表指定的条件。