SQLServer存储过程实践:图书馆借书系统查询

需积分: 42 8 下载量 157 浏览量 更新于2024-09-21 收藏 106KB DOC 举报
"该资源提供的是关于Microsoft SQL Server存储过程的实际应用示例,涉及数据库设计与SQL查询。主要内容包括创建数据库、数据表以及执行不同类型的查询操作,如根据特定条件查询学生信息、图书借阅记录等。" 在SQL Server中,存储过程是一种预编译的SQL语句集合,可以用于执行复杂的数据库操作。本示例主要通过存储过程来处理学校图书馆借书信息管理系统的数据。首先,我们来看一下系统中涉及的三个主要表: 1. 学生信息表(student):包含学生编号(stuID,主键)、学生名称(stuName)和专业(major)字段。 2. 图书表(book):包含图书编号(BID,主键)、书名(title)和作者(author)字段。 3. 借书信息表(borrow):包含借书编号(borrowID,主键)、学生编号(stuID,外键)、图书编号(BID,外键)以及借书日期(T_time)和还书日期(B_time)字段。 接下来,我们将逐一解决题目中提出的查询需求: 1. 查询“计算机”专业学生在“2007-12-15”至“2008-01-08”时间段内借书的信息: ```sql SELECT s.stuID, s.stuName, b.BID, b.title, b.T_time FROM student s JOIN borrow b ON s.stuID = b.stuID JOIN book bk ON b.BID = bk.BID WHERE s.major = '计算机' AND b.T_time BETWEEN '2007-12-15' AND '2008-01-08'; ``` 2. 查询所有借过图书的学生编号、学生名称和专业: ```sql SELECT s.stuID, s.stuName, s.major FROM student s JOIN borrow b ON s.stuID = b.stuID; ``` 3. 查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期和归还日期: ```sql SELECT s.stuName, b.title, b.T_time, b.B_time FROM student s JOIN borrow b ON s.stuID = b.stuID JOIN book bk ON b.BID = bk.BID WHERE bk.author = '安意如'; ``` 4. 查询目前借书但未归还图书的学生名称及未还图书数量: ```sql SELECT s.stuName, COUNT(b.borrowID) AS '未还图书数量' FROM student s JOIN borrow b ON s.stuID = b.stuID WHERE b.B_time IS NULL GROUP BY s.stuName; ``` 以上SQL语句都是基于存储过程的基础,通过JOIN操作连接不同的表,利用WHERE子句进行条件筛选,以及使用聚合函数COUNT来计算未还图书的数量。这些示例有助于理解如何在实际场景中运用存储过程来处理数据库查询任务。