4-史文翰-实验三1

preview
需积分: 0 0 下载量 127 浏览量 更新于2022-08-04 收藏 512KB PDF 举报
【知识点详解】 本实验主要涉及的是SQL(结构化查询语言)在数据库查询中的应用,具体包括以下几个方面: 1. **单表查询**:通过`SELECT`语句从单个表中提取所需信息,如查询“数据库原理”课程的学分。例如: ```sql SELECT credit FROM course WHERE course_name = '数据库原理'; ``` 这里运用了`WHERE`子句来设置查询条件。 2. **排序查询**:使用`ORDER BY`子句对查询结果进行升序或降序排列,如查询选修了课程编号为“C01”的学生的学号和成绩并按成绩降序输出。 ```sql SELECT stu_no, grade FROM sel WHERE course_no = 'C01' ORDER BY grade DESC; ``` 3. **连接查询**:当数据分布在多个表中时,使用`JOIN`操作进行多表连接。如查询选修了“C01”且成绩高于85分的学生的学号、姓名和成绩,使用了自然连接(`NATURAL JOIN`)。 ```sql SELECT stu_no, stu_name, grade FROM student NATURAL JOIN sel WHERE course_no = 'C01' AND grade > 85; ``` 4. **分组与聚合函数**:利用`GROUP BY`对数据进行分组,配合`HAVING`子句过滤分组后的结果,如查询至少选修了三门课程的学生的学号和姓名。 ```sql SELECT stu_no, stu_name, COUNT(course_no) FROM student NATURAL JOIN sel GROUP BY stu_no HAVING COUNT(course_no) >= 3; ``` 5. **嵌套查询**:在主查询中嵌入子查询,用于实现更复杂的逻辑。如查询所有学生的学号和他选修课程的最高成绩,且没有成绩为空的课程。 ```sql SELECT stu_no, course_no, grade, MAX(grade) FROM student NATURAL JOIN sel WHERE stu_no NOT IN (SELECT stu_no FROM sel WHERE grade IS NULL) GROUP BY stu_no; ``` 6. **视图查询**:创建视图可以简化复杂的查询,提高效率。实验中提到对实验二创建的视图进行相关查询,虽然具体视图查询的实例未给出,但通常视图查询与基础表查询类似,只是查询对象是视图。 7. **比较符和逻辑运算符**:如`IN`、`>`等,用于设置查询条件。例如查询选修了“C01”且成绩高于85分的学生的学号和成绩。 ```sql SELECT stu_no, grade FROM sel WHERE course_no = 'C01' AND grade > 85; ``` 8. **特殊查询操作**:如查询没有选修“数据库原理”的学生,使用`NOT IN`操作符。 ```sql SELECT stu_no, stu_name FROM student WHERE stu_no NOT IN (SELECT stu_no FROM sel NATURAL JOIN course WHERE course_name = '数据库原理'); ``` 通过这些实验,学生能够深入理解SQL查询语言的基本语法和功能,熟练掌握数据库中的数据检索技巧,为实际数据库管理与开发打下坚实的基础。同时,对于嵌套查询的使用,展示了在处理复杂查询时如何有效地组织查询逻辑,以满足特定的数据需求。