SQL查询面试题解析:管理岗位业务培训
需积分: 9 27 浏览量
更新于2024-10-14
收藏 124KB DOC 举报
"DBA_SQL查询面试题.doc包含一系列与SQL查询相关的面试问题,主要针对数据库管理员(DBA)的角色。这些问题涉及到使用标准SQL语句来处理各种查询场景,包括嵌套查询、表关联以及特定条件的筛选。文档中提到了4个具体的查询问题,涵盖了学员信息、课程选择和排除特定课程的情况。"
问题1: 查询选修课程名称为“税收基础”的学员学号和姓名
此问题要求找出所有选修了“税收基础”课程的学员的学号和姓名。通过使用嵌套查询,首先从C和SC表中找出课程编号为“税收基础”的学号,然后将这些学号用于主查询,从S表中获取相应的学员姓名和所属单位。
正确查询语句:
```sql
SELECT SN, SD
FROM S
WHERE [S#] IN (
SELECT [S#]
FROM C, SC
WHERE C.[C#] = SC.[C#]
AND C.CN = '税收基础'
)
```
问题2: 查询选修课程编号为'C2'的学员姓名和所属单位
这个问题要求找出选修了课程编号为"C2"的学员的姓名和所属单位。通过直接关联S和SC表,可以达到目的。
正确查询语句:
```sql
SELECT S.SN, S.SD
FROM S, SC
WHERE S.[S#] = SC.[S#]
AND SC.[C#] = 'C2'
```
问题3: 查询未选修课程编号为'C5'的学员姓名和所属单位
这个查询的目标是找出没有选修课程"C5"的所有学员的姓名和所属单位。使用NOT IN操作符,配合嵌套查询找出选修了课程"C5"的学号,然后在主查询中排除这些学号。
正确查询语句:
```sql
SELECT SN, SD
FROM S
WHERE [S#] NOT IN (
SELECT [S#]
FROM SC
WHERE [C#] = 'C5'
)
```
问题4: 查询选修全部课程的学员姓名和所属单位
此问题较为复杂,需要找出选修了所有课程的学员。正确的查询方法是使用RIGHT JOIN和GROUP BY,通过比较每个学生选课的数量(去重)与总课程数量是否相等来确定。
正确查询语句:
```sql
SELECT SN, SD
FROM S
WHERE [S#] IN (
SELECT SC.S#
FROM SC
RIGHT JOIN C
ON SC.C# = C.C#
GROUP BY SC.S#
HAVING COUNT(DISTINCT SC.C#) = (SELECT COUNT(*) FROM C)
)
```
这个查询中,RIGHT JOIN用于获取所有S表中的学号,即使他们在SC表中没有对应记录。GROUP BY按学生分组,HAVING子句则确保每个学生的选课数量等于所有课程数量,表示他们选修了所有课程。
这些问题的解答展示了SQL在数据库查询中的灵活性和多样性,对于DBA角色来说,理解和掌握这些查询技巧是至关重要的。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2007-06-28 上传
2011-03-28 上传
2021-10-08 上传
2022-10-26 上传
2008-08-20 上传
2019-03-18 上传
zhengwh510
- 粉丝: 64
- 资源: 1978