A. mysql数据库查询图书表,输出每一类图书的最高价格、最低价格平均价格的代码怎
1、首先在mysql数据库,创建一张data表,表内插入多条数据,用于测试。
B. sql语句查询(图书借阅)
1. 借书学生的学生编号会出现在borrow表里面。
select stuID,stuName,major
from student
where stuID in
(
select stuID from borrow
)
2. 未规还的记录B_time字段应该是NULL值。
select stuname,count(*) as 借书数量
from student as a join borrow as b
on a.stuid=b.stuid
where b.B_time is NULL
group by b.stuid,a.stuname
3. select stuname,T_time,
(case when B_time is null then '尚未归还' else cast(datediff(day,T_time,B_time) as varchar(5)) end) as 借阅天数
from student a join borrow b
on a.stuid=b.stuid
join book c
on b.bookid=c.bookid
where bookname='天龙八部'
我自己测试过,符合要求,你再看看,希望对你有帮助,互相学习~
C. 用SQL语句,查找这样的图书类别,要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2 倍
select 图书类别
from 图书表
group by 图书类别
having max(定价)>= all(select avg(定价)*2 from 图书表 group by 图书类别)
D. [SQL]求查询语句T-SQL代码!关于图书管理系统的!
1.
while @c<@t
begin
if @rnttime>@borrtime
@count=@count+1
@c=@c+1
end
if @count>5
print'不能借书!'
2.
select p.pubname, avg(b.price) average_price
from publisher p, book b
where p.pubid = b.pubid
3.
你的表里面没有定义过期日期,只有借出日期和返还日期,怎么判断过期未还?
E. 编写SQL语句,查询图书表中不是科学出版社出版的图书的全部信息
语句:select *
from 图书表
where 出版社 <> '科学出版社'
看你好像不太会否定语句,其实就知道两点就够了。
用否定的时候只能是和Like、in、between一起使用
比如 字段1 Not in (1,3,5)
其他的逻辑比较的话都有相反的比较方法,
比如=和<>,>和<=等等,具体要看实际需求的
回答不易,望采纳~
F. 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
G. 设计图书管理系统sql查询语句
1
SELECT *
FROM C
WHERE C# IN(SELECT C# FROM SC GROUP BY C# HAVING COUNT(*) BETWEEN 2 AND 4)
2
SELECT S#
FROM SC JOIN C ON SC.C#=C.C#
WHERE CN='计算机基础'
GROUP BY S#
HAVING COUNT(*)>=2
H. SQL 图书馆系统数据库触发器代码
1、---------------这是分割线--------------------------
Create Trigger tg_借书触发器名 on [借阅记录] For Insert
as
update [借阅记录] set [借阅记录].借书日期=getdate(), [借阅记录].应还日期=getdate()+[读者].可借天数
from [借阅记录] inner join [读者] on [借阅记录].读者卡号=[读者].读者卡号
where [借阅记录] in(SELECT [借阅记录] FROM INSERTED)
update [图书] set [图书].在库数量=[图书].在库数量-1
where [图书].图书号 in (select 图书号 from Inserted)
update [读者] set [读者].可错数量=[读者].可错数量-1
where [读者].读者卡号 in (select 读者卡号 from Inserted)
2、--------------------这是分割线--------------------------------
create trigger tg_还书触发器名 on [借阅记录] For Update
as
update [图书] set [图书].在库数量=[图书].在库数量+1
where [图书].图书号 in (select 图书号 from Deleted)
update [读者] set [读者].可错数量=[读者].可错数量+1
where [读者].读者卡号 in (select 读者卡号 from Deleted)
--超期时插入到超期记录表
if(select 1 from Deleted where 应还日期<getdate())
begin
--insert into 超期记录表(编号,读者卡号,超期天数,超期金额) values(…………)
-----题目中没给出超期金额算法,编号应该是自动不应该手动插入。
end
3、---------这是分割线--------------------
create trigger tr_插入读者触发器名 on [读者] For Insert
as
if(select 1 from Inserted where 类型='学生')
begin
update [读者] set 可借天数=30 where 读者卡号 in(select 读者卡号 from Inserted)
end
else
begin
update [读者] set 可借天数=60 where 读者卡号 in(select 读者卡号 from Inserted)
end
注释:触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。
Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。
I. 用SQL语句实现查询表名为“图书表”中的所有记录所有字段,应该使用的SELECT语句是什么()
select * from 图书表
J. 显示"图书"数据表中的所有记录 SQL语句怎么写
select * from 图书