SQL面试必备:复杂查询实战解析
149 浏览量
更新于2024-06-16
收藏 214KB PDF 举报
"SQL经典面试题集锦"
在SQL面试中,常常会遇到一些经典的题目来测试应聘者的数据库操作能力。以下是对给定文件中部分SQL问题的详细解答和解析:
1. 学生表S、课程表C和学生课程表SC的创建
这是关于数据库设计的问题,创建三张表以表示学生、课程和它们之间的选课关系。在MySQL数据库中,可以使用以下语句创建表格:
```sql
CREATE TABLE S (
id INT PRIMARY KEY,
name VARCHAR(20)
);
CREATE TABLE C (
id INT PRIMARY KEY,
name VARCHAR(20)
);
CREATE TABLE SC (
sid INT REFERENCES S(id),
cid INT REFERENCES C(id),
PRIMARY KEY (sid, cid)
);
```
2. 查询选修了所有选修课程的学生
这个问题的目的是找出选修了所有课程的学生。首先,我们需要知道课程总数,然后检查每个学生是否选修了所有课程。SQL语句如下:
```sql
SELECT s.id, s.name
FROM S s
WHERE (SELECT COUNT(*) FROM SC WHERE sid = s.id) =
(SELECT COUNT(*) FROM C);
```
这个查询比较了每个学生选修的课程数量与总课程数量,如果相等,则表示该学生选修了所有课程。
3. 查询选修了至少5门以上课程的学生
这个查询类似上一个问题,但条件是学生至少选修了5门课程:
```sql
SELECT s.id, s.name
FROM S s
WHERE (SELECT COUNT(*) FROM SC WHERE sid = s.id) >= 5;
```
4. 列出所有年龄比所属主管年龄大的员工ID和名字
此问题涉及到子查询,我们要找出员工年龄大于其主管年龄的情况。SQL语句如下:
```sql
SELECT employee.name
FROM Test employee
WHERE employee.age > (SELECT manager.age FROM Test manager WHERE manager.id = employee.manager);
```
在这个查询中,我们使用了嵌套查询来获取每个员工的主管年龄,并将其与员工自己的年龄进行比较。
5. 查询选修了'计算机原理'课程的学生学号和姓名
这是简单的联接查询,通过学生表和选课表找出选修特定课程的学生:
```sql
SELECT stu.sno, stu.sname
FROM Student stu
WHERE EXISTS (SELECT 1 FROM Sc sc JOIN Course c ON sc.cid = c.cid WHERE sc.sno = stu.sno AND c.cname = '计算机原理');
```
或者使用INNER JOIN:
```sql
SELECT stu.sno, stu.sname
FROM Student stu
JOIN Sc sc ON stu.sno = sc.sno
JOIN Course c ON sc.cid = c.cid
WHERE c.cname = '计算机原理';
```
这些SQL语句展示了在实际数据库操作中常见的查询技巧,包括子查询、联接查询和聚合函数的使用。熟练掌握这些技巧对于在SQL面试中脱颖而出至关重要。
2023-07-13 上传
2023-06-10 上传
2023-09-23 上传
2023-06-06 上传
2023-09-05 上传
2023-11-17 上传
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/user-vip.1c89f3c5.png)
zz_ll9023one
- 粉丝: 915
- 资源: 5091
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储