SQL 图书管理系统的查询语句

(1)信息要求
图书的基本信息、读者的基本信息、读者借阅图书的信息,用户及权限信息等。
(2)功能要求
本系统要求能够实现图书卡片的维护、读者信息的维护、图书的借阅登记和归还登记处理 (包括超期的罚款处理)、各类信息的查询、用户及其权限的管理等功能。假设每个读者有一本借书证,每本借书证最多可以借书5本,每本书最长可以借4个月。其他信息请设计者根据实际需要考虑。
2.系统设计
(1)需求分析
.信息需求(基本信息)
图书卡片信息:图书编号,图书类别代码,图书名称,作者姓名,出版社,出版日期,定价,内容摘要,实际数量,借出数量,卡片登记日期等。
图书分类索引:图书类别代码,类别说明等。
读者信息:读者编号,读者姓名,读者性别,读者职务,工作单位,联系电话,家庭住址,E— mail,登记日期等。
图书借阅信息:图书编号,读者编号,借阅数量,借阅日期,应归还日期,实际归还日期,罚款金额等。
用户信息:用户登录名,用户口令,用户权限,用户全名,用户身份等。
图书管理信息的查询应包括以下功能:
<l>图书信息查询
图书信息查询应提供多种不同的查询手段,如按图书类别、按图书编号、按作者、按出版社、按出版日期等,应支持不确定查询(即所谓的模糊查询)。
<2>读者信息查询
读者信息查询应提供的查询手段包括:按读者编号、按读者姓名、按联系电话、按登记日期等,同样能够支持不确定查询。
<3>图书借阅信息的查询和统计
图书借阅信息的查询应包括:
以图书信息为主体的查询。即统计所有借出图书的情况(以图书编号为关键字),含借出数量和剩余数量;某一种图书的借出明细情况,即借阅该图书的读者、以及借出日期,哪些已超过应归还的日期等。
以读者为主体的查询。即查询所有已经借阅图书但尚未归还的读者,并且,显示某读者的借阅明细信息,或者直接输入读者编号查询该读者的借阅信息。
到期未归还图书的借阅信息查询。即统计并查询所有已经到期但尚未归还的图书及读者的相关信息。
(2)数据库设计
.设计结果大致如下,请根据个人设计要求完成实际数据表设计:
图书卡片(图书编号,类别,图书名称,作者姓名,出版社,出版日期,定价,摘要,实际数量,借出数量,登记日期)。
图书分类(类别,类别说明)。
读者(读者编号,读者姓名,读者性别,读者职务,工作单位,联系电话,家庭住址,
E—mail,登记日期)。
借阅(图书编号,读者编号,借阅数量,借阅日期,应归还日期,实际归还日期,罚款金额)。
用户(用户登录名,用户口令,用户权限,用户全名,用户身份)。
数据表设计完成后,请提交如下例表格文档:
编号 字段名 类型 字段长度 是否为空 说明
1 T_id int 8 否 数据表编号

(3)数据录入
创建数据库,并输入必要的样本数据。
(4)用SQL实现下列查询:
1. 求总藏书量、藏书总金额,总库存册数、最高价、最低价。
2. 列出藏书在10本以上的书(书名、作者、出版社、年份)。
3. 哪些出版社的藏书种类数超过100种。
4. 目前实际已借出多少册书?
5. 年份最久远的书。
6. “数据库系统原理教程,王珊编,清华大学出版社,1998年出版”还有几本?
7. 哪一年的图书最多?
8. 哪本借书证未归还的图书最多?
9、平均每本借书证的借书册数。
10.哪个系的同学平均借书册数最多?
11. 最近两年都未被借过的书。
12. 列出那些借了图书逾期未归还的借书证号和图书名。
13.今年未借过书的借书证。
14. 今年那种书出借最多?
15. 正常情况下,每种图书的总藏量与库存量之差应等于该图书借出后未归还的数量,否则是一种异常情况。请找出存在这种异常情况的图书。

1. 求总藏书量、藏书总金额,总库存册数、最高价、最低价。
select count(图书编号) as 总藏书量,
sum(定价) as 藏书总金额,
sum(实际数量) as 总库存册数,
max(定价) as 最高价,
min(定价) as 最低价
from 图书卡片
go
2. 列出藏书在10本以上的书(书名、作者、出版社、年份)。
select 图书名称,作者姓名,出版社,出版日期
from 图书卡片
group by 图书编号 having(coung(1)>10)
order by 图书名称
go
3. 哪些出版社的藏书种类数超过100种。
select 出版社 as '藏书种类数超过100种的出版社'
from 图书卡片
group by 出版社 having(count(类别)>100)
order by 出版社
go
4. 目前实际已借出多少册书?
select sum(借出数量) as '借出数量'
from 图书卡片
go
5. 年份最久远的书。
select top 1 with ties 图书名称 from 图书卡片
order by 出版日期
go
6. “数据库系统原理教程,王珊编,清华大学出版社,1998年出版”还有几本?
select count(1) from 图书卡片
where concaints(摘要,'"数据库系统原理教程,王珊编,清华大学出版社,1998年出版"')
go
7. 哪一年的图书最多?
select top 1 with ties convert(substring(出版日期,1,4)) as 年份,count(1) as '图书数量'
from 图书卡片
group by 出版日期
order by 图书数量 desc
go
8. 哪本借书证未归还的图书最多?
select top 1 with ties A.读者编号,count(1) as '借书数量'
from 图书卡片 A,借阅 B
where A.图书编号=B.图书编号
group by A.读者编号
order by 借书数量 desc
go
9、平均每本借书证的借书册数。
select avg(借阅数量) as '平均每本借书证的借书册数'
from 借阅
go

10.哪个系的同学平均借书册数最多?
select top 1 with ties A.工作单位,avg(借阅数量) as '平均借阅数量'
from 读者 A,借阅 B
where A.读者编号=B.读者编号
group by A.工作单位
order by 平均借阅数量' desc
go

11. 最近两年都未被借过的书。
select 图书名称
from 图书卡片
where 图书编号 in(select 图书编号 from 借阅 where datediff(year,借阅日期,getdate())>2)
go
12. 列出那些借了图书逾期未归还的借书证号和图书名。
select A.读者编号 as '借书证号',B.图书名称
from 读者 as A inner join 图书卡片 as B on A.图书编号=B.图书编号
where A.应归还日期<getdate() and A.实际归还日期 is null
go
13.今年未借过书的借书证。
select 读者编号
from 读者
where 读者编号 not in(select 读者编号
from 读者
where datediff(year,借阅日期,getdate())=0)
go

14. 今年那种书出借最多?
select top 1 with ties A.类别,count(1) as '借出数量'
from 图书卡片 A,借阅 B
where datediff(year,B.借阅日期,getdate())=0
group by A.类别
order by 借出数量' desc
go
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-05
如果一点都不会写,建议看下sql方面的基础书籍。在入门之后如果个别难题不会可以提出了。
sql将对语法还是少,比较容易学会的!
SQL 语言是1974 年由Boyce 和Chamberlin 提出的。1975 年至1979 年,IBM 公司San Jose Research Laboratory 研制的关系数据库管理系统原形系统System R 实现了这种语言。由于它功能丰富,语言简洁,使用方法灵活,倍受用户和计算机业界的青睐,被众多的计算机公司和软件公司采用。经过多年的发展,SQL 语言已成为关系数据库的标准语言。

SQL 语言的组成

SQL 语言主要由以下几部分组成:

·数据定义语言(DDL,Data Definition Language);

·数据操纵语言(DML,Data Manipulation Language);

·数据控制语言(DCL,Data Control Language);

·其它语言要素(Additional Language Elements)。

SQL 语句数目、种类较多、其主体大约由40 条语句组成,如表4-1 所示。

SQL 语句的结构

所有的SQL 语句均有自己的格式,如图4-1 所示每条SQL 语句均由一个谓词(Verb)开始,该谓词描述这条语句要产生的动作,如图4-1 中的SELECT 关键字。谓词后紧接着一个或多个子句(Clause)子句中给出了被谓词作用的数据或提供谓词动作的详细信息。每一条子句由一个关键字开始,如图4-1 中的WHERE。

参考资料:www.xlhkj.com

相似回答