数据库练习答案
图书(图书编号,书名,作者,出版社,单价)
读者(借书证号,姓名,性别,年龄,单位,职称,地址)
借阅(借书证号,图书编号,借阅日期,备注)1、查找读者黄刚所在的单位。
SELECT 姓名,单位
FROM 读者
WHERE 姓名=’黄刚’
2、查找所有读者的姓名及其出生年份。
SELECT 姓名,2009-年龄AS 出生年份
FROM 读者
3、查找2008年1月1日后借阅图书的借书证号。
SELECT DISTINCT借书证号
FROM 借阅
WHERE借阅日期>2008-1-1
4、查找价格在10 元和20 元之间的图书。
SELECT 书名,作者,单价,出版社
FROM 图书
WHERE 单价BETWEEN 10 AND 20
5、查找清华大学出版社和北京大学出版社的所有图书。
SELECT 书名,作者,出版社
FROM 图书
WHERE 出版社IN (’清华大学出版社’,’北京大学出版社’)
6、查找书名以“数据库”开头的所有图书。
SELECT 书名,作者
FROM 图书
WHERE 书名LIKE ‘数据库%’
7、查找备注为空的借阅情况。
SELECT *
FROM 图书
WHERE 备注IS NULL
8、查找清华大学出版的单价高于10元的图书的情况。
SELECT *
FROM 图书
WHERE 出版社=’清华大学出版社’ and 单价>10
9、查找鲁迅书的情况,并且按出版社升序排列,同一出版社的图书再按图书单价的降序排列。
SELECT *
FROM 图书
WHERE 作者=’鲁迅’
ORDER BY 出版社,单价DESC
10、查找各个出版社出版的图书册数。
SELECT 出版社,COUNT(*)AS 图书册数
FROM 图书
GROUP BY 出版社
11、查找借阅了3本以上图书的借书证号。
SELECT 借书证号
FROM 借阅
GROUP BY 借书证号
HAVING COUNT(*)>3
12、查找所有借阅了图书的读者姓名及所在单位。
SELECT DISTINCT 姓名,单位
FROM 读者,借阅
WHERE 读者.借书证号=借阅.借书证号
13、找出李晶所借的所有图书的书名及借阅日期。
SELECT "李晶所借的图书:",书名,借阅日期
FROM 图书,借阅,读者
WHERE 读者.借书证号=借阅.借书证号
AND 借阅.图书编号=图书.图书编号
AND 姓名="李晶"
14、查找价格在20 元以上已借出的图书,结果按单价降序排列。
SELECT *
FROM 图书,借阅
WHERE 图书.图书编号=借阅.图书编号AND 单价>=20
ORDER BY 单价DESC
15、查询每个读者的基本信息及其借阅的情况。
SELECT * FROM 读者INNER JOIN 借阅
ON读者.借书证号=借阅.借书证号
16、查询计算机系读者的借阅情况,要求列出读者的名字、所借阅的图书编号和借阅日期。
SELECT 姓名,图书编号,借阅日期
FROM 读者JOIN 借阅ON 读者.借书证号=借阅.借书证号
WHERE 单位=‘计算机系’
17、查询计算机系借阅“数据库”书的读者借阅时间,要求列出读者姓名、书名和借阅日期。
SELECT 姓名,图书编号,借阅日期
FROM 读者S JOIN 借阅C ON S.借书证号=C.借书证号
WHERE 单位=‘计算机系’
18、查询所有借阅了‘数据库’书籍的读者情况,要求列出读者姓名和所在的单位。
SELECT 姓名,书名,借阅日期
FROM 图书S JOIN 借阅 C 0N S.图书编号=C.图书编号
JOIN 读者D ON D.借书证号=C.借书证号
WHERE 单位=‘计算机系’AND 书名=‘数据库’
19、查询与张三在同一个单位的读者的姓名和所在的单位。
SELECT S2.姓名,S2.单位
FROM 读者S1 JOIN 读者Studen S2
ON S1.单位=S2.单位
WHERE s1.姓名=‘张三’AND s2.姓名!=‘张三’
20、查询读者的借阅情况,包括借阅了图书的读者和没有借阅图书的读者。
SELECT 读者.借书证号,图书编号,借阅日期
FROM 读者LEFT OUTER JOIN 借阅
ON 读者.借书证号=借阅.借书证号
21、查询与张三在同一个单位的读者。
SELECT 姓名,单位FROM 读者
WHERE 单位IN
(SELECT 单位FROM 读者WHERE 姓名=‘张三’)
22、找出读者的姓名、所在单位,他们与“王明”在同一天借了书。
SELECT 姓名,单位,借阅日期
FROM 读者,借阅
WHERE 借阅.借书证号=读者.借书证号AND 借阅日期IN
(SELECT 借书日期
FROM 借阅,读者
WHERE 借阅.借书证号=读者.借书证号AND 姓名=‘王明’)
23、查询清华大学出版社出版的且单价高于该出版社平均单价的图书。
SELECT * from 图书
WHERE 出版社=‘清华大学出版社’and 单价>
SELECT AVG(单价) FROM 图书
WHERE 出版社=‘清华大学出版社’
24、查询借阅了图书编号为“C01”的读者姓名。
SELECT 姓名FROM 读者
WHERE EXISTS
SELECT * FROM 借阅
WHERE 读者.借书证号=借阅.借书证号AND 图书编号=‘C01’
或SELECT 姓名FROM 读者JOIN借阅ON读者.借书证号=借阅.借书证号WHERE 图书编号=‘C01’
25、查找图书总数。
SELECT "藏书总册数:",COUNT(*)
FROM 图书
26、查找借阅了图书的读者人数。
SELECT COUNT(DISTINCT 借书证号)
FROM 借阅
27、统计清华大学出版社出版的图书的单价总和。
SELECT SUM(单价)AS 总价
FROM 图书
WHERE 出版社=’清华大学出版社’
28、查找清华大学出版社的图书的平均单价。
SELECT AVG(单价)AS 平均单价
FROM 图书
WHERE 出版社=’清华大学出版社’
29、查找清华大学出版社的图书的最高单价。
SELECT MAX(单价)AS 最高单价
FROM 图书
WHERE 出版社=’清华大学出版社’
30、查找清华大学出版社的图书的最低单价。
SELECT MIN(单价)AS 最低单价
FROM 图书
WHERE 出版社=’清华大学出版社’