"这是一份SQL练习题集,包含了46道题目,旨在帮助学习者掌握和巩固在日常工作中常见的SQL操作。通过完成这些练习,可以有效地应对普通的SQL查询和管理任务。练习题涉及到的数据表有student(学生)、teacher(教师)、course(课程)和sc(学生选课成绩),并且提供了部分数据的插入操作示例。"
在这份SQL练习题集中,我们可以预见到一些关键的知识点:
1. **数据表创建(CREATE TABLE)**:题目首先展示了如何创建四个核心表格,包括定义字段、数据类型和主键。例如,`student`表中`sno`是主键,`sname`是姓名,`sage`是年龄,`ssex`是性别。`course`表中,`cno`是课程编号,`cname`是课程名称,`tno`是教师编号,且`pk_course`为主键。
2. **数据类型**:可以看到,字段的数据类型有VARCHAR(可变长度字符串)、INT(整型)和NUMBER(数值类型),这些都是SQL中常用的数据类型。
3. **主键(PRIMARY KEY)**:主键是用于唯一标识一条记录的字段,`student`和`sc`表中的`sno`,以及`course`表中的`pk_course(cno, tno)`都是主键约束。
4. **插入数据(INSERT INTO)**:题目给出了向`student`和`teacher`表中插入数据的示例,这将涉及到如何正确地为每个字段输入值,以及空值(NULL)的处理。
5. **事务处理(COMMIT)**:在插入数据后使用了`COMMIT`命令,这是用来提交事务,确保数据的持久化。
6. **关系数据库模型**:`student`, `teacher`, `course`, 和 `sc` 表之间存在明显的关联,比如学生选课表`sc`中的`sno`和`cno`分别与`student`和`course`表关联,教师表`teacher`中的`tno`与`course`表关联,这些都是关系数据库设计的基础。
7. **联接查询(JOIN)**:实际的练习题很可能会包含对这些表进行联接查询,如找出某位教师教授的所有课程,或者查询某个学生的所有成绩。
8. **子查询(SUBQUERY)**:可能的练习题也会涉及到子查询,例如找出所有没有选课的学生,或者平均分最高的课程。
9. **聚合函数(GROUP BY, SUM, AVG, COUNT等)**:用于统计分析,比如计算每个学生的总分数,或者每个课程的平均分。
10. **排序和限制(ORDER BY, LIMIT)**:用于查询结果的排序和限制返回的行数,例如列出按年龄升序排列的学生,或者只查看前五名高分学生。
11. **条件查询(WHERE)**:筛选满足特定条件的记录,如查找年龄大于21岁的学生,或者得分高于90分的课程。
通过这些练习,学习者能够熟练掌握SQL的基本操作,包括但不限于数据的增删改查、表间关系的处理、条件查询和聚合分析等,从而提升在实际工作中的SQL应用能力。