SQL内部测试题
根据题目要求,我们将针对提出的四个SQL查询需求进行逐一解析,并提供相应的SQL语句实现方法。
1. 查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期
为实现这一查询需求,我们需要连接学生信息表(student)、图书表(book)以及借书信息表(borrow),并通过WHERE
子句限定条件。
具体步骤如下:
- 使用INNER JOIN连接三张表,基于学生编号(stuID)与借书表中的学生编号相匹配,同时图书编号(BID)也需匹配。
- 使用WHERE子句筛选出“计算机”专业的学生,并且借书日期(T_time)落在指定时间段内。
对应的SQL语句如下:
SELECT s.stuID, s.stuName, b.BID, b.title, br.T_time
FROM student s
INNER JOIN borrow br ON s.stuID = br.stuID
INNER JOIN book b ON br.BID = b.BID
WHERE s.major = '计算机' AND br.T_time BETWEEN '2007-12-15' AND '2008-01-08';
2. 查询所有借过图书的学生编号、学生名称、专业
这个查询较为简单,我们只需连接学生信息表(student)和借书信息表(borrow),并通过GROUP BY
子句进行分组,确保每个学生的信息只出现一次。
具体步骤如下:
- 使用INNER JOIN连接学生信息表(student)与借书信息表(borrow),基于学生编号(stuID)进行关联。
- 使用GROUP BY子句按学生编号(stuID)、学生名称(stuName)以及专业(major)进行分组。
对应的SQL语句如下:
SELECT s.stuID, s.stuName, s.major
FROM student s
INNER JOIN borrow br ON s.stuID = br.stuID
GROUP BY s.stuID, s.stuName, s.major;
3. 查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期
具体步骤待补充。