图书管理系统数据库sql,SQL创建图书管理系统数据库
大家好,感谢邀请,今天来为大家分享一下图书管理系统数据库sql的问题,以及和SQL创建图书管理系统数据库的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
SQL 图书管理系统的查询语句
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
sql题目,关于图书信息管理系统
在此图书馆管理系统中,使用到了一个重要的连接,即与数据库Accesss相连。数据库中存有图书馆中所信息,包括读者信息、管理员资料、借阅与退还记录。所有与管理有关的数据皆在其中,是保证系统能够正常实现各种功能的一架桥。
1、数据库需求分析
⒈Admi表,即管理员表,记录了用户名和密码。
⒉Admirz表,即管理日志表,记录了书号、书名、图书证号、借/还、操作日期、已付款额。
⒊book表,即图书表,记录了书号、书名、作者、出版社、入库时间、是否借出、价格。
⒋borrowbook表,即借阅表,记录了图书证号、书号、借阅日期、应还日期。
⒌person表,即读者表,记录了图书证号、姓名、性别、系别、班级。
2、数据库表的设计
⒈Admi表
表中记录了可以使管理员进入该系统的用户名及密码,如表1所示。
表1管理员信息表
⒉Admirz表
表中记录借还书日志,用于存下所有对图书操作的记录,以便以后可以翻阅和查找,如表2所示。
表2管理日志表
⒊book表
表中记录了库内所有图书的所有资料,如表3-3。
表3图书表
⒋person表
表中记录库中所有读者的相关信息,如表4所示。
表4读者表
⒌borrowbook表
表内记录了此时图书的借阅情况,如表5所示。
表5借阅表
用sql设计一个图书馆数据库
create database library
on primary
(name='library_1',
filename='C:\data\library_1.mdf',
size=5MB,
maxsize=30MB,
filegrowth=15%)
log on
(name='library_2',
filename='C:\data\library_1.ldf',
size=3MB,
maxsize=20MB,
filegrowth=15%)
use library
create table readernote
(readerno char(5) not null primary key,
unit varchar(20) not null,
name varchar(8) not null,
sex char(2) not null,
job varchar(8),
address varchar(20) not null)
insert into readernote values('00001','学校','张3','男','主任')
insert into readernote values('00002','学校','李四','男','学生',')
insert into readernote values('00003','学校','王5','女','主任')
insert into readernote values('00004','学校','赵6','男','教师')
insert into readernote values('00005','学校','徐7','女','教师')
create table book
(bookno char(8) not null primary key,
classno char(5) not null,
bookname varchar(20) not null,
author varchar(8) not null,
cbunit varchar(20) not null,
price int not null)
insert into book values('00000001','00001','计算机网络','张平','清华大学出版社',38)
insert into book values('00000002','00002','计算机组成原理','章江','清华大学出版社',35)
insert into book values('00000003','00003','计算机语言','李明','清华大学出版社',50)
insert into book values('00000004','00004','数据库设计','刘阳','清华大学出版社',32)
insert into book values('00000005','00005','专业英语','李冬','清华大学出版社',22)
create table borrow
(readerno char(5) not null,
bookno char(8) not null,
borrowdatetime datetime not null,
returndatetime datetime not null,
primary key(readerno,bookno),
foreign key(readerno)references readernote(readerno),
foreign key(bookno)references book(bookno))
insert into borrow values('00001','00000001','2011-01-02','2011-02-01')
insert into borrow values('00002','00000002','2011-02-02','2011-03-01')
insert into borrow values('00003','00000003','2011-03-02','2011-04-01')
insert into borrow values('00004','00000004','2011-04-02','2011-05-01')
insert into borrow values('00005','00000005','2011-05-02','2011-06-01')
create table librarymanager
(jobno char(3) not null primary key,
name varchar(8) not null,
sex char(2) not null,
borndatetime datetime not null,
jobname varchar(10) not null,
salary int not null)
insert into librarymanager values('001','姜某','男','1963-09-11','主任',2000)
insert into librarymanager values('002','王某','女','1964-09-11','副主任',1800)
insert into librarymanager values('003','陈某','男','1980-09-11','管理员',1500)
create login mylogin2
with password='password',
check_policy=off
create user sysadmin for login mylogin2
exec sp_addrolemember'db_owner','sysadmin'
grant all privileges on dbo.readernote to sysadmin
with grant option
grant all privileges on dbo.borrow to sysadmin
with grant option
grant all privileges on dbo.book to sysadmin
with grant option
grant all privileges on dbo.librarymanager to sysadmin
with grant option
create login mylogin3
with password='password',
check_policy=off
create user admin1 for login mylogin3
exec sp_addrolemember'db_owner','admin1'
create login mylogin4
with password='password',
check_policy=off
create user admin2 for login mylogin4
exec sp_addrolemember'db_datareader','admin2'grant all privileges on dbo.readernote to admin1
grant all privileges on dbo.borrow to admin1
grant all privileges on dbo.book to admin1
revoke alter on librarymanager from admin1
grant select on borrow to admin2
create procedure st
@jobno int
As select* from librarymanager
Where jobno=@jobno
Create procedure st1
@readerno int
As select* from borrow
Where readerno=@readerno
Grant exec on st to admin1
Grant exec on st1 to admin2
exec st@jobno=01
exec st1@readerno=00001
select* from book
应该比较接近了。你自己再改改
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!