SQL面试题解析:建表、复杂查询与关系操作

需积分: 10 3 下载量 110 浏览量 更新于2024-07-31 收藏 73KB DOC 举报
"SQL面试问题及答案,包括学生表、课程表和选课表的建表语句,以及查询特定条件学生的SQL语句。" 在SQL面试中,理解数据库的基本操作和复杂查询是至关重要的。以下是对题目中涉及的知识点的详细解释: 1. **建表语句**: - 在这个问题中,创建了三个表:学生表S,课程表C,和学生课程表SC。这些表使用了关系型数据库的基本元素,如主键(primary key)和外键(foreign key)。主键用于唯一标识每条记录,而外键则用于连接两个表,建立实体之间的关联。例如,SC表中的sid和cid分别引用S表和C表的id,表示学生和课程之间的关系。 2. **查询选修了所有课程的学生**: - 这个问题要求找出选修了所有课程的学生。解决方法是对比学生表中的学生数量与选课表中对应学生ID的记录数量。如果两者相等,说明该学生选修了所有课程。这里用到了子查询来计算每个学生的选课数量,并与所有课程的数量进行比较。 3. **查询选修了至少5门课程的学生**: - 类似于上一个问题,但这里需要找出选修课程数不少于5门的学生。子查询计算每个学生的选课数量,然后用`>=5`作为条件进行筛选。 4. **年龄比所属主管大的员工**: - 此问题涉及到自连接和子查询。我们需要找到那些年龄大于他们直接主管的员工。首先,我们需要从员工表中选择员工,然后在子查询中找到他们的主管的年龄,并进行比较。这里的关键是正确地链接员工表自身,以比较每个员工的年龄与其主管的年龄。 5. **查询选修特定课程的学生**: - 查询选修了特定课程(例如'计算机原理')的学生,可以通过连接学生表、课程表和选课表来实现。在这个例子中,我们通过学生的学号(sno)和课程的编号(cno)匹配选课表,然后进一步通过学生表获取学生姓名(sname)。 这些问题展示了SQL中的一些核心概念,如表的创建、主键和外键的使用、子查询、连接查询以及条件查询。掌握这些技能对于任何需要处理数据库查询的职位都是必不可少的,特别是在面试中,能够熟练运用这些知识解决问题将大大增加成功的机会。