【知识点详解】
1. **存储过程**:存储过程是预编译的SQL语句集合,可以带有输入/输出参数,用于执行多次的数据库操作。在本例中,创建了一个名为`GetStudentByID`的存储过程,它接收一个参数`sno`(学号),并根据学号查询学生表中的信息。
2. **SQL查询排序**:SQL的`ORDER BY`子句用于对查询结果进行排序。例如,第二题要求查询所有学生,先按班级升序排序,再按年龄降序排序,对应的SQL语句为`SELECT * FROM 学生表 ORDER BY 班级 ASC, 年龄 DESC`。
3. **LIKE操作符**:在SQL中,LIKE操作符用于在WHERE子句中进行模式匹配。第三题要求查询姓"张"的学生,使用`LIKE`配合通配符`%`可以实现,如`SELECT * FROM 学生表 WHERE 姓名 LIKE '%张%'`。
4. **COUNT函数与GROUP BY**:第四题使用了COUNT函数计算性别分组的数量,`GROUP BY`语句用于将数据分组。SQL语句`SELECT 性别, COUNT(*) FROM 学生表 GROUP BY 性别`可以得到男生和女生的数量。
5. **子查询**:第五题中,使用了子查询来找出比"王平"年龄大的学生,子查询嵌套在主查询的WHERE子句中。
6. **JOIN操作**:第七题展示了如何使用INNER JOIN操作连接学生表和成绩表,以获取学号、姓名、课程号和成绩。这使得能够同时从两个表中获取相关数据。
7. **INSERT语句**:插入新记录到表中,如`INSERT INTO 学生表 (学号, 姓名, 性别, 年龄, 班级) VALUES ('1022', '望', '男', 19, '信息 2')`。
8. **UPDATE语句**:更新现有记录,如将学号为1022的学生姓名改为"旺"的SQL语句是`UPDATE 学生表 SET 姓名='旺' WHERE 学号='1022'`。
9. **DELETE语句**:删除没有选课的学生,利用子查询来筛选没有出现在成绩表中的学号,SQL语句为`DELETE FROM 学生表 WHERE 学号 NOT IN (SELECT sno FROM 成绩表)`。
10. **自关联查询**:第十题中,查询课程号9的先行课,利用了自关联和子查询,找出先行课号等于9的课程的先行课。
11. **关系代数**:关系代数是一种形式化的查询语言,第十一题中,关系代数表达式`∏学号(∫课程号=‘3’(选课表))`表示查询选修3号课程的学生学号。
12. **视图**:视图是基于SQL查询的结果集的虚拟表。第十四题创建了一个视图,显示计算机1班所有男生的信息。
13. **GRANT语句**:GRANT语句用于赋予权限,如将对学生表的更新权限赋予用户U1的SQL语句是`GRANT UPDATE ON TABLE 学生表 TO U1`。
14. **数据库实例**:提供了一个学生、课程和选修关系的数据库实例,包括了查询不同条件下的学生信息和选修情况。
15. **SQL语句**:给出了更多实际的SQL查询需求,如查询年龄小于20岁的学生,查询年龄不在特定范围内的学生,以及查询每个学生选修的课程等。
以上就是针对题目所涵盖的数据库编程相关知识点的详细解释,包括了存储过程、SQL查询、JOIN操作、INSERT、UPDATE、DELETE、视图创建、权限管理以及关系代数等核心概念。