关于借书卡Card,图书Book,借书记录 Borrow,三表根据题目要求写SQL语句。

时间:2022-06-22 17:47:24

这三个表很综合的把SQL数据库查询语句给覆盖了,连接查询,模糊查询,编写触发器,视图等,有什么不会的可以评论交流,希望各位大牛多多指教。

借书卡:Card(Cno卡号,Name姓名,Class 班级)

图书:Book(Bno书号,Bname书名,Author作者,Price单价,Qty库存册数)

借书记录:Borrow(Cno借书卡号,Bno书号,Rdate 还书日期)

说明:限定每人每种书只能借一本,库存册数随借书、还书而改变。

a) 查询借书超过3次的读者,需要输出借书卡号和所借图书册数。

Select Cno,count(Bno) as 借书数量

from Borrow group by Cno

having count(Bno)>3

b) 查询借阅了“三国演义”一书的读者,输出姓名和班级。

Select Card.Name,Card.Class from Borrow

left join Book on Book.Bno = Borrow.Bno

left join Card on Card.Cno = Borrow.Cno

where Book.Bname=‘三国演义’

c) 查询过期未还图书,输出借书卡号、借书姓名、书号及还书日期。

Select Card.Cno,Card.Name,Borrow.Bno,Borrow.Rdate from Borrow

left join Card on Card.Cno=Borrow.Cno

Where getdate()>Borrow.Rdat

d) 查询现有图书中价格最高的图书,输出书名和作者。

Select Bname,Author from Book

where price in (Select max(price) from Book)

e) 查询书名包括“网络”关键词的图书,输出书号、书名、作者

Select Bno,Bname,Author from Book where Bname like ‘%网络%’

f) 在Borrow表上建立一个触发器,如果读者借阅的书名是“数据库技术及应用”,就将该读者的借阅记录保存在Borrow_Save表中(与Borrow表结构相同)

Create Trigger T_Save On Borrow

For Insert

As

Begin

Insert into Borrow_Save Select * from Inserted where Bname=‘数据库技术及应用’

End

g) 建立一个视图,显示“开发2班”学生的借书信息(只要求显示姓名和书名)

Create View V_Borrow

As

Select Card.Name,Card.Class from Borrow

left join Book on Book.Bno = Borrow.Bno

left join Card on Card.Cno = Borrow.Cno

where Card.Class=‘开发2班