sql练习

1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)
select  name,company from reader wherenamelike'%';

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

SELECT BOOK_NAME,OUTPUT FROM book

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

SELECT BOOK_NAME,price FROM book where output = '高等教育出版社'orderBY price desc;

4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。
SELECT output,price from book where price between10and20orderBY output ,price asc;

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

 

SELECT book_name,writer FROM book WHERE book_name like'计算机%';

 

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

 SELECT reader_id  FROM borrow WHERE  book_id =112266and reader_id in(SELECT reader_id  FROM borrow WHERE  book_id = 449901)

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

 

SELECTdistinctname,company FROM reader,borrow WHERE reader.reader_id = borrow.reader_id

 

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

 

select a.book_name,b.borrow_date from book a,borrow b ,reader r

where b.reader_id=r.reader_id and r.name like'%'and a.book_id=a.book_id;

 

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

selectdistinct reader.reader_id ,name ,company

from reader , borrow where borrow_date >to_date('2006/10/31','yyyy.mm.dd') and reader.reader_id=borrow.reader_id;

 

/* 方法2

SELECTDISTINCT r.reader_id,name,company

from reader r join borrow b ON r.reader_id = b.reader_id  where borrow_date>to_date('2006/10/31','yyyy.mm.dd')

*/

 

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


SELECT book.book_id FROM book,borrow WHERE book.book_id = borrow.book_id and book_name = 'FoxPro大全';

 

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

 

select r.name,r.company,b.borrow_date from reader r,borrow b

where months_between((select b1.borrow_date from borrow b1,reader r1

where b1.reader_id=r1.reader_id and r1.name='赵正义'),b.borrow_date)=0and r.reader_id=b.reader_id and r.name!='赵正义';

 

12) 查询20067月以后没有借书的读者借书证号、姓名及单位。
日期的关系:昨天 > 今天 > 明天

Selectdistinct reader.reader_id,name,

company from reader,borrow where reader.reader_id = borrow.reader_id and reader.reader_id

notin(select borrow.reader_id from borrow where borrow_date >=to_date('2006-6-30','yyyy.mm.dd'));

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

 

SELECT price,AVG(price),MAX(price),MIN(price) FROM book where output ='科学出版社'groupBY price;


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

 

selectcount(*)num from  reader r ,borrow b where r.reader_id=b.reader_id  and r.company='信息系';

 

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

 

SELECTDISTINCT output,MAX(price),MIN(price),COUNT(*) FROM book groupBY output


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

SELECTDISTINCT company,COUNT(*) FROM reader groupBY company

 

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

Selectname,company from reader,

borrow where reader.reader_id = borrow.reader_id groupbyname,company havingcount(*)>=2;

 

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

 

Select company,count(*) as "peo" from reader,

borrow where reader.reader_id = borrow.reader_id groupby company havingcount(*) >1

 

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

 

SELECTDISTINCT output,COUNT(*),SUM(price) FROM book groupby output

 

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


selectname,company,grade from reader wherenotexists(select * from reader,borrow where reader.reader_id=borrow.reader_id and company='经济系')

-------------------------------------------------------------------------------------------------------------------------------------------------------------

附录:建表语句

创建图书管理库的图书、读者和借阅三个基本表的表结构:
创建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(20),
NAME VARCHAR2(10),
SEX VARCHAR2(2),
GRADE VARCHAR2(20),
ADDR VARCHAR2(50));

 

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


插入数据:
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,'19-3
-2006');
insert into borrow values(125,332211,'12-2
-2006');
insert into borrow values(111,445503,'21-8
-2006');
insert into borrow values(112,112266,'14-3
-2006');
insert into borrow values(114,665544,'21-10
-2006');
insert into borrow values(120,114455,'02-11
-2006');
insert into borrow values(120,118801,'18-10
-2006');
insert into borrow values(119,446603,'12-11
-2006');
insert into borrow values(112,449901,'23-10
-2006');
insert into borrow values(115,449902,'21-8
-2006');
insert into borrow values(118,118801,'10-9
-2006');

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值