⑴ 请用sql语句完成下面设计 1创建以存储过程 pro borrow,通过输入参数学号,判断该学生是否有书未还
你这样问,没人会回答的,最少要把有哪些表列出来,表里面有哪些字段
比如是不是有 借书信息表、学生信息表 这些表里面包含哪些字段都要列出来,不然没法回答
⑵ 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语言完成下列问题
1.
select b.借书证号,b.图书ID,a.书名,a.出版社ID,b.借书日期
from 图书表 a
inner join 借阅表 b on a.图书ID=b.图书ID
where b.借书证号 in ('J001','J002','J005')
2.
select b.借书证号,c.姓名,b.图书ID,a.书名,a.出版日期
from 图书表 a
inner join 借阅表 b on a.图书ID=b.图书ID
inner join 读者表 c on b.借书证号=c.借书证号
where b.借书证号 in ('J001','J002','J005')
3.
select *
into #JY1
from 借阅表
where 标记=false
4.
select 版次,avg(单价) as 平均单价
from 图书表
group by 版次
5.
select 出版社ID,avg(单价) as 平均单价,max(单价) as 最高单价,min(单价) as 最低单价
from 图书表
group by 出版社ID
6.
select a.*
from 图书表 a
where
exists
(
select 1
from 借阅表
where 借书日期>'2008-01-01 00:00:00'
and 图书ID=a.图书ID
)
⑷ SQL server查询已借阅图书达两个月(60天)及以上,至今没有归还的读者信息情况(要求利用子
语句如下:
select dzh as 读者号,(select dzm from reader where dzh=a.dzh) as 读者名,(select sfz from reader where dzh=a.dzh) as 身份证,(select dh from reader where dzh=a.dzh) as 电话,(select dz from reader where dzh=a.dzh) as 地址 from record as a where ghbj='否' and datediff(dd,jyrq,getdate())>=60
其实这题用Inner Join来做更好,用子查询会大大影响查询速度,不过既然题目是这样出的就这么写吧。
⑸ sql查询问题
这年头学生都当起老师来了。还会使用激励模式。
告诉你简单的办法,只要你会操作SQLSERVER就可以了。
建立这几个表,然后选择表右键,生成SQL脚本,建立表的SQL语句就有了。
其他的SQL你选择表右键,打开表,查询,然后自己填一下,SQL也就有了。
如果这也不会,那还是乖乖看书。
⑹ sql语句查询(图书借阅)
1,查询所有借过书的学生编号,姓名,专业,?SELECT DISTINCT borrow.stuid, student.major
FROM borrow LEFT OUTER JOIN
student ON borrow.stuid = student.stuID2,借书但是未归还的学生姓名及该生未归还书的图书数量?SELECT student.stuName, COUNT(1) AS Expr1
FROM borrow LEFT OUTER JOIN
student ON student.stuID = borrow.stuid
WHERE (borrow.b_time IS NULL)
GROUP BY student.stuName3,比如书名是《天龙八部》,请分别查询借过它的人的姓名,借书日期,看了多少天,要考虑若某人借了但是没还,则在看了多久一栏填上(尚未归还)SELECT student.stuName, borrow.t_time, CASE WHEN borrow.b_time IS NULL THEN '尚未归还' ELSE cast(datediff(day,t_time,b_time) as varchar) END AS Expr1
FROM borrow LEFT OUTER JOIN
student ON student.stuID = borrow.stuid LEFT OUTER JOIN
book ON borrow.bid = book.Bid
WHERE (book.title = '天龙八部')
⑺ SQL查询过期未还书的读者的信息和所借的书的信息
select 图书信息表.*,读者信息表.* from 图书信息表 a,读者信息表 b ,图书借还表 c where a.读者编号 =c.读者编号 and b.图书编号=c.图书编号 and datetime()>应该还书时间 and 实际还书时间=(实际还书时间的默认值)