SQL语言练习2

先创建下面三个表:

book表)


borrow表)


reader表)



根据如下要求写出SQL语句。

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

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

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

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

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

6) 检索同时借阅了总编号(BOOK_ID)112266449901两本书的借书证号(READER_ID)

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

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

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

10)* 找出借阅了<FoxPro大全>一书的借书证号。 

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

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

13) 科学出版社图书的最高单价、最低单价、平均单价。
14)* 信息系当前借阅图书的读者人次数。
15) 求出各个出版社图书的最高价格、最低价格和总册数。
16) 分别找出各单位当前借阅图书的读者人数及所在单位。

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

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

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

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


附录:建表语句

创建图书管理库的图书、读者和借阅三个基本表的表结构:
创建BOOK:(图书表)
 CREATE TABLE BOOK (
 BOOK_ID NUMBER(10),
 SORT VARCHAR2(10),
 BOOK_NAME VARCHAR2(50),
 WRITER VARCHAR2(10),
 OUTPUT VARCHAR2(50),
 PRICE NUMBER(3));


创建READER:(读者表)
CREATE TABLE READER (
READER_ID NUMBER(3),
COMPANY VARCHAR2(10),
NAME VARCHAR2(10),
SEX VARCHAR2(2),
GRADE VARCHAR2(10),
ADDR VARCHAR2(50));


创建BORROW:(借阅表)
CREATE  TABLE  BORROW (
 READER_ID  NUMBER(3),
 BOOK_ID  NUMBER(10),
 BORROW_DATE  DATE);

-------------------------------------------------------------------华丽的分割线----------------------------------------------------------------------------------------

建表语句、数据插入及SQL查询语句

CREATE TABLE BOOK (
 BOOK_ID NUMBER(10) not null primary key,
 SORT VARCHAR2(10),
 BOOK_NAME VARCHAR2(50),
 WRITER VARCHAR2(10),
 OUTPUT VARCHAR2(50),
 PRICE NUMBER(3));
 
CREATE TABLE READER (
READER_ID NUMBER(3) not null primary key,
COMPANY VARCHAR2(10),
NAME VARCHAR2(10),
SEX VARCHAR2(2),
GRADE VARCHAR2(10),
ADDR VARCHAR2(50));


CREATE  TABLE  BORROW (
 READER_ID  NUMBER(3) not null references reader(reader_ID),
 BOOK_ID  NUMBER(10) not null references book(BOOK_ID),
 BORROW_DATE  DATE) ;

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);
commit;

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');
commit;

insert into borrow values(112,445501,to_date('19-03-2006','dd-mm-yyyy'));
insert into borrow values(125,332211,to_date('12-02-2006','dd-mm-yyyy'));
insert into borrow values(111,445503,to_date('21-08-2006','dd-mm-yyyy'));
insert into borrow values(112,112266,to_date('14-03-2006','dd-mm-yyyy'));
insert into borrow values(114,665544,to_date('21-10-2006','dd-mm-yyyy'));
insert into borrow values(120,114455,to_date('02-11-2006','dd-mm-yyyy'));
insert into borrow values(120,118801,to_date('18-10-2006','dd-mm-yyyy'));
insert into borrow values(119,446603,to_date('12-11-2006','dd-mm-yyyy'));
insert into borrow values(112,449901,to_date('23-10-2006','dd-mm-yyyy'));
insert into borrow values(115,449902,to_date('21-08-2006','dd-mm-yyyy'));
insert into borrow values(118,118801,to_date('10-09-2006','dd-mm-yyyy'));
commit;


--1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。
select r.name,r.company from reader r where r.name like '李%'

--2) 列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。 
select distinct b.book_name, b.output from book b 

--3) 查找"高等教育出版社"的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。
select b.book_name,b.price from book b where b.output='高等教育出版社' order by b.price desc

--4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。
select b.book_name,b.price from  book b where b.price between 10 and 20 order by b.price asc,b.output asc;

--5) 查找书名以"计算机"开头的所有图书和作者(WRITER)。
select b.book_name,b.writer from book b where b.book_name like '计算机%';

--6) 检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。
(select b.reader_id from borrow b where b.book_id='112266')
intersect(select b.reader_id from borrow b where b.book_id='449901')

--7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。
select distinct r.name,r.company  from  borrow br,reader r where br.reader_id=r.reader_id;

--8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。 
select b.book_name,br.borrow_date from  borrow br,reader r,book b where br.reader_id=r.reader_id and b.book_id=br.book_id and r.name like '李%';

--9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。
select distinct r.reader_id  from borrow br,reader r where r.reader_id=r.reader_id and to_char(br.borrow_date,'yyyy-mm')>'2006-09'

--10)* 找出借阅了<FoxPro大全>一书的借书证号。
select br.reader_id from borrow br,book b where br.book_id=b.book_id and b.book_name='FoxPro大全'

--11) 找出与"赵正义"在同一天借书的读者姓名、所在单位及借书日期 。
select r.name,br.borrow_date,r.addr from borrow br,reader r where br.reader_id=r.reader_id and br.borrow_date =(
select br.borrow_date from borrow br,reader r where br.reader_id=r.reader_id and r.name='赵正义')

--12) 查询2006年7月以后没有借书的读者借书证号、姓名及单位。
select r.reader_id,r.name,r.addr from borrow br,reader r where br.reader_id=r.reader_id and to_char(br.borrow_date,'yyyy-mm')>'2006-06'

--13) 求"科学出版社"图书的最高单价、最低单价、平均单价。
select max(b.price),min(b.price),avg(b.price) from book b group by b.output having b.output='科学出版社'

--14)* 求"信息系"当前借阅图书的读者人次数。
select count(*) from borrow br,reader r where br.reader_id=r.reader_id and r.company='信息系'

--15) 求出各个出版社图书的最高价格、最低价格和总册数。
select max(b.price),min(b.price),count(*),b.output from book b group by b.output

--16) 分别找出各单位当前借阅图书的读者人数及所在单位。
select r.company,count(*) from borrow br,reader r where br.reader_id=r.reader_id group by r.company;

--17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。
select r.name,r.company from reader r,
(select br.reader_id from borrow br group by br.reader_id having count(*)>=2) sa where r.reader_id=sa.reader_id;

--18) 分别找出借书人次数多于1人次的单位及人次数。
select r.company,count(*) from borrow br,reader r where r.reader_id=r.reader_id group by r.company having count(*)>1;

--19) 找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。
select b.output,count(*),sum(b.price) from book b group by b.output;

--20) 查询经济系是否还清所有图书。如果已经还清,显示该系所有读者的姓名、所在单位和职称.
SELECT name,company,grade FROM reader 
WHERE reader_id not in (SELECT DISTINCT reader_id FROM borrow) 
AND company='经济系';


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值