MySQL练习题及答案(图书管理数据库)
现有图书管理数据库的三个关系模式,他们的字段分别如下:图书表:总编号, 分类号, 书名, 作者, 出版单位, 单价读者表:借书证号, 单位, 姓名, 性别, 职称, 地址借阅表:借书证号, 总编号, 借书日期以上表对应的字段明细如下:book :b_no ,b_type ,b_name , b_author ,b_publish ,b_pricereader :r_no ,r_unit, r_na
·
文章目录
- 1、查找出价格位于10元和20元之间的图书种类,结果按出版单位和单价升序排序
- 2、找出藏书中各个出版社的册数、价值总额
- 3、求出各个出版社图书的最高价格、最低价格和总册数
- 4、查找所有借了书的读者的姓名以及所在单位
- 5、找出李某所借图书的所有图书的书名及借书日期
- 6、查询1997年10月以后借书的读者借书证号、姓名和单位
- 7、找出借阅了 FoxPro大全一书的借书证号以及作者
- 8、分别找出借书人次超过1人次的单位及人次数
- 9、找出与赵正义在同一天借书的读者姓名、所在单位以及借书日期
- 10、求信息系当前借阅图书的读者人次数
- 11、找出当前至少借阅了2本书的读者及所在单位
- 12、找出姓李的读者姓名和所在单位
- 13、求科学出版社图书的最高单价、最低单价和平均单价
- 14、查找出高等教育出版社的所有图书及单价,结果按单价降序排列
现有图书管理数据库的三个关系模式,他们的字段分别如下:
图书表:总编号, 分类号, 书名, 作者, 出版单位, 单价
读者表:借书证号, 单位, 姓名, 性别, 职称, 地址
借阅表:借书证号, 总编号, 借书日期
以上表对应的字段明细如下:
book :
b_no ,b_type ,b_name , b_author ,b_publish ,b_price
reader :
r_no , r_unit , r_name ,r_sex ,r_pro ,r_address
borrow :
r_no , b_no ,b_time
CREATE TABLE book (
b_no varchar(10),
b_type varchar(20),
b_name varchar(20),
b_author varchar(20),
b_publish varchar(20),
b_price decimal(18,2)
);
CREATE TABLE reader (
r_no varchar(20),
r_unit varchar(20),
r_name varchar(20),
r_sex varchar(20),
r_pro varchar(20),
r_address varchar(20)
);
CREATE TABLE borrow (
r_no varchar(20),
b_no varchar(20),
b_time datetime
);
INSERT INTO book
VALUES
( '445501', 'TP3/12', '数据库导论', '王强', '科学出版社', 17.90 );
INSERT INTO book
VALUES
( '445502', 'TP3/12', '数据库导论', '王强', '科学出版社', 17.90 );
INSERT INTO book
VALUES
( '445503', 'TP3/12', '数据库导论', '王强', '科学出版社', 17.90 );
INSERT INTO book
VALUES
( '332211', 'TP5/10', '计算机基础', '李伟', '高等教育出版社', 18.00 );
INSERT INTO book
VALUES
( '112266', 'TP3/12', 'FoxBASE', '张三', '电子工业出版社', 23.60 );
INSERT INTO book
VALUES
( '665544', 'TS7/21', '高等数学', '刘明', '高等教育出版社', 20.00 );
INSERT INTO book
VALUES
( '114455', 'TR9/12', '线性代数', '孙业', '北京大学出版社', 20.80 );
INSERT INTO book
VALUES
( '113388', 'TR7/90', '大学英语', '胡玲', '清华大学出版社', 12.50 );
INSERT INTO book
VALUES
( '446601', 'TP4/13', '数据库基础', '马凌云', '人民邮电出版社', 22.50 );
INSERT INTO book
VALUES
( '446602', 'TP4/13', '数据库基础', '马凌云', '人民邮电出版社', 22.50 );
INSERT INTO book
VALUES
( '446603', 'TP4/13', '数据库基础', '马凌云', '人民邮电出版社', 22.50 );
INSERT INTO book
VALUES
( '449901', 'TP4/14', 'FoxPro大全', '周虹', '科学出版社', 32.70 );
INSERT INTO book
VALUES
( '449902', 'TP4/14', 'FoxPro大全', '周虹', '科学出版社', 32.70 );
INSERT INTO book
VALUES
( '118801', 'TP4/15', '计算机网络', '黄力钧', '高等教育出版社', 21.80 );
INSERT INTO book
VALUES
( '118802', 'TP4/15', '计算机网络', '黄力钧', '高等教育出版社', 21.80 );
INSERT INTO reader
VALUES
( '111', '信息系', '王维利', '女', '教授', '1号楼' );
INSERT INTO reader
VALUES
( '112', '财会系', '李立', '男', '副教授', '2号楼' );
INSERT INTO reader
VALUES
( '113', '经济系', '张三', '男', '讲师', '3号楼' );
INSERT INTO reader
VALUES
( '114', '信息系', '周华发', '男', '讲师', '1号楼' );
INSERT INTO reader
VALUES
( '115', '信息系', '赵正义', '男', '工程师', '1号楼' );
INSERT INTO reader
VALUES
( '116', '信息系', '李明', '男', '副教授', '1号楼' );
INSERT INTO reader
VALUES
( '117', '计算机系', '李小峰', '男', '助教', '1号楼' );
INSERT INTO reader
VALUES
( '118', '计算机系', '许鹏飞', '男', '教授', '1号楼' );
INSERT INTO reader
VALUES
( '119', '计算机系', '刘大龙', '男', '副教授', '4号楼' );
INSERT INTO reader
VALUES
( '120', '国际贸易', '李雪', '男', '副教授', '4号楼' );
INSERT INTO reader
VALUES
( '121', '国际贸易', '李爽', '女', '讲师', '4号楼' );
INSERT INTO reader
VALUES
( '122', '国际贸易', '王纯', '女', '讲师', '4号楼' );
INSERT INTO reader
VALUES
( '123', '财会系', '沈小霞', '女', '助教', '2号楼' );
INSERT INTO reader
VALUES
( '124', '财会系', '朱海', '男', '讲师', '2号楼' );
INSERT INTO reader
VALUES
( '125', '财会系', '马英明', '男', '副教授', '2号楼' );
INSERT INTO borrow
VALUES
( '112', '445501', '1997-3-19' );
INSERT INTO borrow
VALUES
( '125', '332211', '1997-2-12' );
INSERT INTO borrow
VALUES
( '111', '445503', '1997-8-21' );
INSERT INTO borrow
VALUES
( '112', '112266', '1997-3-14' );
INSERT INTO borrow
VALUES
( '114', '665544', '1997-10-21' );
INSERT INTO borrow
VALUES
( '120', '114455', '1997-11-2' );
INSERT INTO borrow
VALUES
( '120', '118801', '1997-10-18' );
INSERT INTO borrow
VALUES
( '119', '446603', '1997-12-12' );
INSERT INTO borrow
VALUES
( '112', '449901', '1997-10-23' );
INSERT INTO borrow
VALUES
( '115', '449902', '1997-8-21' );
INSERT INTO borrow
VALUES
( '118', '118801', '1997-9-10' );
1、查找出价格位于10元和20元之间的图书种类,结果按出版单位和单价升序排序
#1、查找出价格位于10元和20元之间的图书种类,结果按出版单位和单价升序排序
SELECT
b_publish as "出版社" ,
b_price as "价格"
FROM
book
WHERE b_price BETWEEN 10 AND 20
ORDER BY b_price, b_publish; #默认升序
2、找出藏书中各个出版社的册数、价值总额
# 2、找出藏书中各个出版社的册数、价值总额
SELECT
b_publish as "出版社",
COUNT( b_no ) as "册数",
sum( b_price ) as "价值总额"
FROM
book
GROUP BY
b_publish
3、求出各个出版社图书的最高价格、最低价格和总册数
#3、求出各个出版社图书的最高价格、最低价格和总册数
SELECT
b_publish as "出版社" ,
MAX( b_price ) as "最高价格",
min( b_price ) as "最低价格",
COUNT(b_no) as "册数"
FROM
book
GROUP BY
b_publish
4、查找所有借了书的读者的姓名以及所在单位
-- 4、查找所有借了书的读者的姓名以及所在单位
SELECT distinct #distinct删除重复的结果
r_name as "姓名" ,
r_unit as "所在单位"
FROM borrow,reader
WHERE borrow.r_no =reader.r_no
5、找出李某所借图书的所有图书的书名及借书日期
#5、找出李某所借图书的所有图书的书名及借书日期
SELECT
b_name as "图书名",
b_time as "借阅时间"
FROM
borrow as a,
reader as b,
book as c
WHERE
a.b_no = c.b_no
AND a.r_no = b.r_no
AND r_name LIKE '李%'
6、查询1997年10月以后借书的读者借书证号、姓名和单位
#6、查询1997年10月以后借书的读者借书证号、姓名和单位
SELECT
borrow.r_no as "借书证号", #对于重复出现的列。必须写具体的borrow.r_no因为有两个表都有r_no列
b_name as "姓名",
r_unit as "单位"
FROM
borrow
INNER JOIN reader ON borrow.r_no = reader.r_no
INNER JOIN book ON borrow.b_no = book.b_no
WHERE
b_time > '1997-10-1'
# 方法二
SELECT
a.r_no as "借书证号",
b_name as "姓名",
r_unit as "单位"
FROM
borrow as a,
reader as b,
book as c
WHERE
a.b_no = c.b_no
AND a.r_no = b.r_no
AND b_time > '1997-10-1'
7、找出借阅了 FoxPro大全一书的借书证号以及作者
#7、找出借阅了 FoxPro大全一书的借书证号以及作者
SELECT
borrow.r_no as "借书证号" ,
b_author as "作者"
FROM
borrow
INNER JOIN book ON borrow.b_no = book.b_no
WHERE
b_name = 'FoxPro大全'
8、分别找出借书人次超过1人次的单位及人次数
#8、分别找出借书人次超过1人次的单位及人次数
SELECT
r_unit as "单位",
COUNT(borrow.r_no) as "人次数"
FROM
borrow
INNER JOIN reader ON borrow.r_no = reader.r_no
GROUP BY
r_unit
HAVING
count(borrow.r_no) > 1;
9、找出与赵正义在同一天借书的读者姓名、所在单位以及借书日期
#9找出与赵正义在同一天借书的读者姓名、所在单位以及借书日期
SELECT
r.r_name as 姓名,
r.r_unit as 所在单位,
b.b_time as 借书日期
FROM
borrow as b,
reader as r
WHERE
b.r_no = r.r_no
AND b.b_time = (
SELECT
b.b_time
FROM
borrow as b,
reader as r
WHERE
b.r_no = r.r_no
AND r.r_name = '赵正义'
)
10、求信息系当前借阅图书的读者人次数
#10、求信息系当前借阅图书的读者人次数
SELECT
COUNT(*) AS 人次数
FROM
borrow b,
reader r
WHERE
r.r_no = b.r_no
AND r.r_unit = '信息系'
11、找出当前至少借阅了2本书的读者及所在单位
#11、找出当前至少借阅了2本书的读者及所在单位
SELECT DISTINCT
r1.r_name as 姓名,
r1.r_unit as 单位
FROM
reader as r1
INNER JOIN borrow as b1 ON r1.r_no = b1.r_no
WHERE
r1.r_name IN (
SELECT
r2.r_name
FROM
reader r2
INNER JOIN borrow b2 ON r2.r_no = b2.r_no
GROUP BY
r2.r_name
HAVING
COUNT(*)>= 2
)
12、找出姓李的读者姓名和所在单位
#12、找出姓李的读者姓名和所在单位
SELECT r_name ,r_unit
FROM reader
WHERE r_name LIKE'李%';
13、求科学出版社图书的最高单价、最低单价和平均单价
#13、求科学出版社图书的最高单价、最低单价和平均单价
SELECT
b_publish as 出版社,
MAX( b_price ) as 最高价,
MIN( b_price ) as 最低价,
AVG( b_price ) as 平均价
FROM
book
GROUP BY
b_publish
HAVING
b_publish = '科学出版社';
14、查找出高等教育出版社的所有图书及单价,结果按单价降序排列
#14、查找出高等教育出版社的所有图书及单价,结果按单价降序排列
SELECT DISTINCT
b_name AS 图书 ,
b_price as 单价
FROM
book
WHERE
b_publish = '高等教育出版社'
ORDER BY
b_price DESC; #desc 是降序。 默认是按升序输出
#### 15、列出图书库中所有藏书的书名以及出版单位
-- 15、列出图书库中所有藏书的书名以及出版单位
SELECT
b_name AS 书名,
b_publish AS 出版单位
FROM
book
GROUP BY
b_name
更多推荐
已为社区贡献1条内容
所有评论(0)