数据库入门_查询语句

建立“图书”数据库及如下3个表,并输入实验数据,用SQL语句实现如下查询:

(1)查询每条借阅记录的借阅天数(函数DATEDIFF获取两个日期的差);

select datediff(day,bdate,rdate)

from bm

(2)查询库存数在510本之间的图书的图书编号、书名及库存量;

select bid,bname,remain

form bookm

where remain > 5 and remain <10

(3)查询书名包括“英语”的图书信息;

select *

from bookm

where bname=’%英语%

4)统计各类图书的平均定价以及库存总数;

select ,avg(price)sum(remain)

from bookm

group by class

5)统计每本书籍借阅的人数,要求输出图书编号和所借人数,查询结果按人数降序排列;

select bid,count(*)

from bm

group by bid

order by count(*)desc

 

 

(6)查询有库存的各类图书信息,要求输出类别名称和借阅数量;

  select bookm.class,COUNT(*)

from bookm,bm

having bookm.bid=bm.bid

  group by class

(7)查询借阅了“大学英语”一书的读者,输出读者姓名、性别、班级;

select rname,sex ,class

from rm

where rid in (

select rid

from bm

 where bid in(

select bid

from bm

where bname='大学英语'

)

)

 

8)查询每个读者的读者编号、姓名、所借图书编号以及所借阅日期;(LEFT OUTER JOIN

select bookm.rid,name,aid,bdate

from rm,bm

left outer join bm on (rm.rid =bm.rid) 

 

9)查询现有图书中价格最高的图书,输出书名、作者、定价;

select bname ,author ,price 

from bookm

where price =(

select MAX(price )

 from bookm 

)

 

 

 

 

 

 

 

10)查询借阅了“大学英语”但没有借阅“C++程序设计”的读者,输出读者姓名、性别、系部;

select name ,sex , company

from rm 

where name in(

select name

from bm

where bid in (

select bid

from bookm

where bname ='大学英语' ))

and name not in (

select name

from bm 

where bid in (

select bid

from bookm

where bname ='C++程序设计') )

 

11)统计借阅了2本以上图书的读者信息;

select *

from rm

where rid in(

select rid

from bm 

group by rid

 having COUNT(*)>2)

 

12)查询借阅了“大学英语”一书或者借阅了“C++程序设计”一书的读者信息;(用集合查询完成)

select *

from rm

where rid in (

select rid 

from bm,bookm 

where bm.bid=bookm.bid and bname ='大学英语')

union

select *

from rm

where rid in (

select rid 

from bm,bookm 

where bm.bid=bookm.bid and bname='C++程序设计')

13)查询既借阅了“大学英语”一书又借阅了“C++程序设计”一书的读者信息;(用集合查询完成)

 select *

from rm

where rid in (

select rid 

from bm,bookm 

where bm.bid =bookm.bid and bname='大学英语')

intersect

select *

from rm

where rid in (

select rid 

from bm,bookm 

where bm.bid=bookm.bid and bname='C++程序设计')

 

(14)查询计算机系中比其他系所有读者借书数量都多的读者的信息;

select *

from rm x

where company ='计算机系' and rid in(

select rm.rid 

from rm,bm

where rm.rid=bm.rid and rm.rid=x.rid 

group by rm.rid 

having count(bid)>any (

select count(bid)

from rm,bm

where rm.rid =bm.rid and company <>'计算机系' group by rm.rid ) )

 

15)将“C++程序设计”这本书的归还日期增加一个月(函数DATEADD)。

update

bm set Borrowingdate =DATEADD(MONTH,1,rdate)

where bid in(

select bid 

from bookm 

where bname ='C++程序设计') 

 

16)查询借阅次数大于2的图书的图书编号、书名、库存数和借阅次数;

select *

from rm

where bid in(

select bid

from bm

group by bid

having count(*)>2)

 

17)在读者信息表中插入一条新的记录(读者编号:R10011;姓名:张三;单位:管理学院);

insert

into rm(rid,sex ,company )

values ('R10011','张三','电子系')

18)将计算机类的所有图书的库存数增加5

update bookm 

set remain+=5 

where class=’计算机’ 

 

 

实验数据:

图书信息表:

图书编号

类别

出版社

作者

书名

定价

库存

1001

计算机

机械工业出版社

王民

数据结构

28

10

1002

计算机

机械工业出版社

张建平

计算机应用

20

5

1003

计算机

电子工业出版社

王敏

数据库技术

15

8

1004

计算机

电子工业出版社

谭浩强

C 语言

25

5

1005

英语

中国人民大学出版社

张锦芯

应用文写作

25

8

1006

管理

高等教育出版社

Robison

管理学

15

5

1007

管理

机械工业出版社

Fayol

工业管理

30

4

1008

数学

机械工业出版社

李平

线性代数

20

5

1009

管理

机械工业出版社

Durark

公司的概念

14

10

1010

数学

机械工业出版社

徐新国

统计学

15

5

读者信息表:

读者编号

姓名

单位

性别

班级

R1001

张小航

计算机学院

08511

R1002

王文广

化学院

08511

R1003

李理

管理学院

08511

R1004

李彦宏

化学院

08512

R1005

张丽霞

管理学院

08512

R1006

王强

物理学院

07211

R1007

张宝田

计算机学院

07212

R1008

宋文霞

化学院

07611

R1009

刘芳菲

管理学院

08811

R1010

常江宁

计算机学院

08812

借阅信息表:

图书编号

读者编号

借阅日期

归还日期

10002

R10003

2015-9-20

2015-10-20

10003

R10003

2015-9-20

2015-10-20

10004

R10003

2015-9-30

2015-10-30

10009

R10003

2015-9-30

2015-10-30

10009

R10007

2015-5-20

2015-6-20

10010

R10007

2015-5-20

2015-6-20

10009

R10009

2015-5-30

2015-6-30

10010

R10009

2015-5-22

2015-6-22

10002

R10009

2015-5-22

2015-6-22

10003

R10009

2015-5-30

2015-6-30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值