SQL语句练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL语句复习题
设有一图书馆数据库,包括三个表:图书表、读者表、借阅表。
图书表(图书号,书名,作者,出版社,单价)
读者表(读者号,姓名,性别,部门)
借阅表(读者号,图书号,借出日期,归还日期)
试用SQL的查询语句表达下列查询:
(1)查询全体图书的图书号,书名,作者,出版社,单价。
(2)查询机械工业出版社图书的平均价格、最高价、最低价。
(3)查询读者的读者号、姓名、借阅的图书名、借出日期、归还日期。
(4)查询借阅图书本数超过2本的读者号、总本数。并按借阅本数值从大到小排序。(5)查询’科学出版社’的图书中单价比’机械工业出版社’最高单价还高的的图书书名、单价。
(6)查询已被借阅过并已归还的图书信息。
(7)给图书表增加一列“ISBN”,数据类型为CHAR(10)
(8)向读者表加入一个新读者,该读者的信息为:
(‘200197’, ‘王小平’, ‘男’ , ’物理系’)
(9)完成读者’王小平’在借出一本图书10日后归还该书的归还日期的更新。
(10)当读者’王小平’按期归还图书时,删除借阅记录。
答案:
(1) SELECT 图书号,书名,作者,出版社,单价
FROM 图书
或者
SELECT * FROM 图书
(2)SELECT AVG(单价)AS‘平均价’,MAX(单价)AS‘最高价’, MIN(单价)AS‘最低价’FROM 图书
WHERE 出版社=’机械工业出版社’
(3)SELECT 读者.读者号,姓名,书名,借出日期,归还日期
FROM 读者,图书,借阅
WHERE 读者.读者号 = 借阅.读者号 AND 图书.图书号=借阅.图书号
(4)SELECT 读者号,COUNT(图书号) AS ‘总本数’
FROM 借阅
GROUP BY 读者号
HAVING COUNT(*) > 2
ORDER BY COUNT(图书号) DESC
(5)SELECT 图书号,单价 FROM 图书
WHERE 出版社=’科学出版社’ AND 单价>(
SELECT MAX(单价) FROM 图书 WHERE 出版社=’机械工业出版社’) 或者
SELECT 图书号,单价 FROM 图书
WHERE 出版社='科学出版社' AND 单价>ALL (
SELECT 单价 FROM 图书 WHERE 出版社='机械工业出版社')
(6) SELECT * FROM 图书
WHERE 图书号 IN (SELECT 图书号 FROM 借阅 WHERE 归还日期 IS NOT NULL)
或者
SELECT * FROM 图书 B1
WHERE EXISTS (SELECT * FROM 借阅 B2
WHERE B1.图书号=B2.图书号 AND 归还日期 IS NOT NULL)
(7)ALTER TABLE 图书
ADD ISBN CHAR(10)
(8)INSERT INTO 读者
V ALUES (‘200197’, ‘王小平’, ‘男’, ‘物理系’)
(9)UPDATE 借阅
SET 归还日期= 借出日期+ 10
WHERE 读者号=(SELECT 读者号FROM 读者WHERE 姓名=’王小平’ ) (10)DELETE FROM 借阅
WHERE 读者号=(SELECT 读者号FROM 读者
WHERE 姓名= ‘王小平’ )