4-史文翰-实验三1
需积分: 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查询语言的基本语法和功能,熟练掌握数据库中的数据检索技巧,为实际数据库管理与开发打下坚实的基础。同时,对于嵌套查询的使用,展示了在处理复杂查询时如何有效地组织查询逻辑,以满足特定的数据需求。