数据库sql课后练习题及答案解析_sql数据库习题与解析

2020-02-28 其他范文 下载本文

数据库sql课后练习题及答案解析由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sql数据库习题与解析”。

先创建下面三个表:

(book表)

(borrow表)

(reader表)

1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。

2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。

4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。

5)查找书名以”计算机”开头的所有图书和作者(WRITER)。

6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。

##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。

9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。

##10)* 找出借阅了一书的借书证号。

11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。#13)求”科学出版社”图书的最高单价、最低单价、平均单价。##14)* 求”信息系”当前借阅图书的读者人次数。

#15)求出各个出版社图书的最高价格、最低价格和总册数。#16)分别找出各单位当前借阅图书的读者人数及所在单位。

17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。18)分别找出借书人次数多于1人次的单位及人次数。

19)找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。

20)查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称。

附录:建表语句

创建图书管理库的图书、读者和借阅三个基本表的表结构: 创建BOOK:(图书表)

CREATE TABLE BOOK(BOOK_ID int, SORT VARCHAR(10), BOOK_NAME VARCHAR(50), WRITER VARCHAR(10), OUTPUT VARCHAR(50), PRICE int);

创建READER:(读者表)

CREATE TABLE READER(READER_ID int, COMPANY VARCHAR(10), NAME VARCHAR(10), SEX VARCHAR(2), GRADE VARCHAR(10), ADDR VARCHAR(50));

创建BORROW:(借阅表)

CREATE TABLE BORROW(READER_ID int, BOOK_ID int, BORROW_DATE datetime)

插入数据: BOOK表: 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);

READER表: insert into reader values(111,'信息系','王维利','女','教授','1号楼424');insert into reader values(112,'财会系','李 立','男','副教授','2号楼316');insert into reader values(113,'经济系','张 三','男','讲师','3号楼105');insert into reader values(114,'信息系','周华发','男','讲师','1号楼316');insert into reader values(115,'信息系','赵正义','男','工程师','1号楼224');insert into reader values(116,'信息系','李 明','男','副教授','1号楼318');insert into reader values(117,'计算机系','李小峰','男','助教','1号楼214');insert into reader values(118,'计算机系','许鹏飞','男','助工','1号楼216');insert into reader values(119,'计算机系','刘大龙','男','教授','1号楼318');insert into reader values(120,'国际贸易','李 雪','男','副教授','4号楼506');insert into reader values(121,'国际贸易','李 爽','女','讲师','4号楼510');insert into reader values(122,'国际贸易','王 纯','女','讲师','4号楼512');insert into reader values(123,'财会系','沈小霞','女','助教','2号楼202');insert into reader values(124,'财会系','朱 海','男','讲师','2号楼210');insert into reader values(125,'财会系','马英明','男','副教授','2号楼212');

BORROW表: insert into borrow values(112,445501,'3-19-2006');insert into borrow values(125,332211,'2-12-2006');insert into borrow values(111,445503,'8-21-2006');insert into borrow values(112,112266,'3-14-2006');insert into borrow values(114,665544,'10-21-2006');insert into borrow values(120,114455,'11-2-2006');insert into borrow values(120,118801,'10-18-2006');insert into borrow values(119,446603,'11-12-2006');insert into borrow values(112,449901,'10-23-2006');insert into borrow values(115,449902,'8-21-2006');insert into borrow values(118,118801,'9-10-2006');

现有关系数据库如下:

数据库名:图书借阅管理系统

读者表(读者编号 char(6),姓名,性别,年龄,单位,身份证号,职称)图书表(图书编号char(6),图书名称,出版社,作者)借阅表(读者编号,图书编号,借阅时间)用SQL语言实现下列功能的sql语句代码。(1)创建数据表book;

book表(图书编号 char(6),图书名称,出版社,作者)要求使用:主键(图书编号)、非空(图书名称),非空(作者)(2)创建数据表reader表;

学生信息表(reader编号 char(8),姓名,性别,年龄,工作单位,身份证号,职称)要求使用:主键(reader编号)、默认(职称)、非空(工作单位,姓名)、唯一(身份证号)、检查(性别),检查(年龄)(3)创建借书表borrow;

borrow(ID,读者编号,图书编号,借书日期)要求使用:外键(学号,课号)(4)将下列课程信息添加到book表的代码

图书编号 名称

100101 数据库原理 100102 数据结构

修改 课号为100102的图书名称:数据结构与算法 删除 课号为100101的图书信息(5)创建视图读者借书信息的代码;

读者借书信息视图(读者编号,姓名,图书编号,图书名称,借书日期)(6)从读者表book中查询姓李的女读者的情况:姓名、性别、工作单位。(7)查询统计出借书量超过5本的单位平均年龄

(8)创建带参数的存储过程[借某图书的读者高低均年龄]、执行该过程的代码

存储过程功能:查询借阅某图书的的读者最高年龄、最低年龄、平均年龄;

执行该过程,查询所有借阅’数据库基础’这本书的读者的最高年龄、最低年龄、平均年龄;

1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。

SELECT NAME,COMPANY FROM READER WHERE NAME LIKE '李%'

2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。

SELECT BOOK_NAME, OUTPUT FROM BOOK

3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。

SELECT BOOK_NAME,PRICE FROM BOOK WHERE OUTPUT='高等教育出版社' ORDER BY PRICE DESC 4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。

SELECT SORT,OUTPUT,PRICE FROM BOOK WHERE PRICE BETWEEN 10 AND 20 ORDER BY OUTPUT ,PRICE

5)查找书名以”计算机”开头的所有图书和作者(WRITER)。

SELECT BOOK_NAME,WRITER FROM BOOK WHERE BOOK_NAME LIKE '计算机%' 6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。

SELECT A.READER_ID FROM BORROW A,BORROW B WHERE A.BOOK_ID='112266' AND B.BOOK_ID='449901' AND A.READER_ID=B.READER_ID

##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。

SELECT DISTINCT NAME,COMPANY FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID

8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。

SELECT BOOK.BOOK_NAME,BORROW.BORROW_DATE FROM BOOK,BORROW,READER WHERE BOOK.BOOK_ID=BORROW.BOOK_ID AND

READER.READER_ID=BORROW.READER_ID AND READER.NAME LIKE '李%'

9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。

SELECT READER_ID,NAME,COMPANY FROM READER WHERE READER_ID IN(SELECT READER_ID FROM BORROW WHERE BORROW_DATE >='2006-10-1')

##10)* 找出借阅了一书的借书证号。

SELECT DISTINCT READER_ID FROM BORROW,BOOK WHERE BORROW.BOOK_ID=BOOK.BOOK_ID AND BOOK.BOOK_NAME LIKE 'FoxPro大全'

11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。

SELECT NAME,COMPANY,BORROW_DATE FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID AND BORROW_DATE IN(SELECT BORROW_DATE FROM BORROW,READER WHERE BORROW.READER_ID=READER.READER_ID AND NAME='赵正义')

12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。

SELECT READER_ID,NAME,COMPANY FROM READER WHERE READER_ID NOT IN(SELECT READER_ID FROM BORROW WHERE BORROW_DATE>='2006-7-1')

#13)求”科学出版社”图书的最高单价、最低单价、平均单价。

SELECT MAX(PRICE)最高单价,MIN(PRICE)最低单价,AVG(PRICE)平均单价 FROM BOOK WHERE OUTPUT='科学出版社'

##14)* 求”信息系”当前借阅图书的读者人次数。

SELECT COUNT(DISTINCT READER_ID)当前借阅图书的读者人次数FROM BORROW WHERE READER_ID IN(SELECT READER_ID FROM READER WHERE COMPANY IN('信息系'))

#15)求出各个出版社图书的最高价格、最低价格和总册数。

SELECT MAX(PRICE)最高价格,MIN(PRICE)最低价格,COUNT(PRICE)总册数FROM BOOK GROUP BY OUTPUT

#16)分别找出各单位当前借阅图书的读者人数及所在单位。

SELECT COUNT(COMPANY)读者人数,COMPANY FROM BORROW,READER WHERE BORROW.READER_ID=READER.READER_ID GROUP BY COMPANY

17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。

SELECT NAME 读者姓名,COMPANY 单位FROM READER WHERE READER_ID IN(SELECT READER_ID FROM BORROW GROUP BY READER_ID HAVING COUNT(*)>=2)

18)分别找出借书人次数多于1人次的单位及人次数。

SELECT COMPANY,COUNT(*)人次数 FROM READER,BORROW WHERE BORROW.READER_ID=READER.READER_ID GROUP BY COMPANY HAVING COUNT(*)>1

19)找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。

SELECT OUTPUT,COUNT(*)书籍的总册数,SUM(PRICE)书的价值总额 FROM BOOK GROUP BY OUTPUT

20)查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称。

SELECT NAME,COMPANY FROM READER WHERE NOT EXISTS(SELECT* FROM READER,BORROW WHERE READER.READER_ID=BORROW.READER_ID AND COMPANY='经济系')

《数据库sql课后练习题及答案解析.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据库sql课后练习题及答案解析
点击下载文档
相关专题 sql数据库习题与解析 练习题 课后 答案 sql数据库习题与解析 练习题 课后 答案
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文