熟练掌握SQL的SELECT简单查询语句的使用。
熟练使用SQL语句进行多表连接查询、嵌套查询、集合查询等复杂查询。
熟练使用GROUP BY、HAVING、ORDER BY 等SQL子语句进行查询数据分组和排序
SQL查询是数据库管理中最基本也是最强大的工具,用于从数据库中提取所需的数据。在本实验报告中,学生常啸通过一系列的SQL查询练习,旨在掌握SQL的查询技巧,包括简单的SELECT语句,复杂的多表连接查询,嵌套查询,集合查询,以及数据分组和排序。
1. SELECT简单查询语句:这是SQL中最基础的查询,用于获取指定列的数据。例如,"SELECT SNO, SNAME FROM S WHERE DNAME='计算机'" 查询了S表中计算机系学生的学号和姓名。
2. 多表连接查询:在多个表之间建立关联,获取跨表的数据。虽然实验报告未提供具体例子,但通常会使用JOIN语句,如 INNER JOIN, LEFT JOIN, RIGHT JOIN 或 FULL JOIN。
3. 嵌套查询:一个查询嵌套在另一个查询中,内层查询的结果作为外层查询的条件。例如,"SELECT * FROM S WHERE SNO IN (SELECT SNO FROM SC WHERE CNO = 'C1')" 将找出选修课程C1的所有学生。
4. 集合查询:UNION, UNION ALL, INTERSECT 和 EXCEPT 是集合操作符,分别用于合并结果集(去除重复行)、合并结果集(包含重复行)、找到两个查询结果的交集和找到两个查询结果的差集。
5. GROUP BY子句:用于将数据分组,通常与聚合函数(如COUNT, SUM, AVG, MAX, MIN)一起使用,例如 "SELECT CNO, COUNT(SNO) FROM SC GROUP BY CNO" 统计每门课程的选修人数。
6. HAVING子句:与WHERE类似,但它用于在聚合函数之后过滤分组,例如 "SELECT CNO, AVG(SCORE) FROM SC GROUP BY CNO HAVING AVG(SCORE) > 80" 找出平均分数高于80的课程。
7. ORDER BY子句:对查询结果进行排序,例如 "SELECT SNO, SCORE FROM SC ORDER BY SCORE DESC" 按照分数降序排列。
8. 模糊查询:利用LIKE或PATINDEX操作符进行字符串的模糊匹配,例如 "SELECT * FROM S WHERE SNAME LIKE '%李%'" 找出姓名中包含"李"的所有学生。
9. 运算符IN和EXISTS:IN用于匹配列表中的值,如 "SELECT SNO, SNAME FROM S WHERE SNO IN (SELECT SNO FROM SC WHERE CNO = 'C1')"; EXISTS则检查子查询是否返回任何行,如 "SELECT SNAME FROM S WHERE EXISTS (SELECT * FROM SC WHERE SC.SNO = S.SNO AND CNO = 'C2')”。
10. 聚合函数:如AVG计算平均值,COUNT计数,SUM求和,MAX和MIN找最大值和最小值。例如,"SELECT AVG(SCORE) FROM SC" 计算所有课程的平均成绩。
11. DISTINCT关键字:用于去除重复行,如 "SELECT DISTINCT CNO FROM SC" 获取所有独特的课程号。
12. 使用GROUP BY和HAVING结合可以进行更复杂的分组过滤,如 "SELECT CNO, COUNT(SNO) FROM SC GROUP BY CNO HAVING COUNT(SNO) > 3" 找出选修人数超过3人的课程。
13. 查询排序和统计:"SELECT CNO, MAX(SCORE), MIN(SCORE), AVG(SCORE) FROM SC GROUP BY CNO ORDER BY CNO" 返回每个课程的最高分、最低分、平均分并按课程号排序。
通过这些实验,学生不仅理解了SQL的基本语法,还学会了如何处理复杂的数据查询,这对理解和操作数据库系统至关重要。在实际工作中,这样的技能对于数据分析师、数据库管理员和软件开发者等角色都极其重要。