在IT行业的数据库管理与开发领域,SQL(Structured Query Language)是一种极为重要的技能,尤其是在处理大量数据和复杂查询时。以下是对“SQL查询练习”中所提及的几个关键知识点的详细解析,这些知识点围绕着学生、课程和成绩三个核心表进行。 ### 1.多表联接查询在学生表(`Member`)、课程表和成绩表(`Score`)之间进行联接查询是本题的核心。为了查询各个学生特定课程的成绩,如语文、数学、英语、历史,需要使用多表联接(JOIN)。具体来说,可以使用INNER JOIN或LEFT JOIN来连接`Member`表和`Score`表,然后进一步联接课程表,以确保每个学生的所有课程成绩都能被正确匹配。 ```sql SELECT M.MName AS姓名, SUM(CASE WHEN F.FName = '语文' THEN S.Score ELSE NULL END) AS语文, SUM(CASE WHEN F.FName = '数学' THEN S.Score ELSE NULL END) AS数学, SUM(CASE WHEN F.FName = '英语' THEN S.Score ELSE NULL END) AS英语, SUM(CASE WHEN F.FName = '历史' THEN S.Score ELSE NULL END) AS历史FROM Member M JOIN Score S ON M.MID = S.MID JOIN (SELECT * FROM Course WHERE FName IN ('语文', '数学', '英语', '历史')) F ON S.FID = F.FID GROUP BY M.MName; ``` ### 2.条件筛选查询对于查询成绩低于70分的学生及其对应课程名和成绩的需求,可以通过WHERE子句结合条件筛选来实现。此查询将关注于`Score`表中的成绩字段,与预设的阈值进行比较,同时联接`Course`表以获取课程名。 ```sql SELECT M.MName AS姓名, F.FName AS课程名, S.Score AS成绩FROM Member M JOIN Score S ON M.MID = S.MID JOIN Course F ON S.FID = F.FID WHERE S.Score < 70 xss=removed xss=removed xss=removed COUNT(*) = ' + CAST(@ExamCount AS NVARCHAR(10)) + '>