本题用到下面三个关系表:
CARD 借书卡。 CNO 卡号,NAME 姓名,CLASS 班级
BOOKS 图书。 BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数
BORROW 借书记录。 CNO 借书卡号,BNO 书号,RDATE 还书日期
备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
要求实现如下15个处理:
1. 找出借书超过5本的读者,输出借书卡号及所借图书册数。(2分)
2. 查询借阅了"水浒"一书的读者,输出姓名及班级。(3分)
3. 查询过期未还图书,输出借阅者(卡号)、书号及还书日期。(3分)
4. 查询书名包括"网络"关键词的图书,输出书号、书名、作者。(2分)
5. 查询现有图书中价格最高的图书,输出书名及作者。(2分)
6. 将"C01"班同学所借图书的还期都延长一周。(3分)
答案:1:
SELECT 借书卡号 = CNO,所借图书册数 = COUNT(DISTINCT BNO)
FROM BORROW
GROUP BY BORROW.CNO
HAVING COUNT(DISTINCT BNO) > 5
2:
SELECT 姓名=[NAME],班级=CLASS
FROM CARD
WHERE CNO IN(SELECT CNO FROM BORROW WHERE BNO = (SELECT BNO FROM BOOKS WHERE BNAME = '水浒'))
3:
SELECT CNO,BNO,RDATE
FROM BORROW
WHERE RDATE < GETDATE()
4:
SELECT 借阅者=BNO,书名=BNAME,作者=AUTHOR
FROM BOOKS
WHERE BNAME LIKE '%网络%'
5:
SELECT 书名=BNAME,作者 = AUTHOR
FROM BOOKS
WHERE PRICE = (SELECT MAX(PRICE) FROM BOOKS)
6:
UPDATE BORROW SET RDATE = DATEADD(MONTH,1,RDATE)
WHERE CNO IN(SELECT CNO FROM CARD WHERE CLASS = 'C01')