MySQL SQL练习题解析:经典面试题挑战
需积分: 9 11 浏览量
更新于2024-07-14
收藏 49KB DOCX 举报
"这篇文档是关于SQL的经典练习题目集,主要针对MySQL,适合Java面试中的SQL笔试环节。文档中包含了各种类型的SQL问题,通过解答这些问题,可以提升SQL技能,特别是对于MySQL8.0.11版本的用户。文档中不仅提供了SQL语句,还有执行结果的展示,方便理解。此外,作者还挑选了一些常见的面试题,以帮助读者掌握解题思路和方法。"
在SQL面试中,以下是一些关键知识点:
1. **分组查询与条件过滤**:
- `GROUP BY` 语句用于将数据按照一个或多个列进行分组。
- `HAVING` 子句用于在分组后对组进行条件过滤,与`WHERE`子句不同,`WHERE`作用于单行记录,而`HAVING`作用于分组。
例子:查询每门课都大于80分的学生姓名
```sql
SELECT name FROM table GROUP BY name HAVING MIN(grade) > 80;
```
2. **数据去重**:
- 当数据表中有重复记录时,可以使用`GROUP BY`结合聚合函数`MIN()`或`MAX()`来删除冗余信息。
例子:删除除了自动编号不同,其他都相同的学生冗余信息
```sql
DELETE FROM table_name WHERE 自动编号 NOT IN (
SELECT MIN(自动编号)
FROM table_name
GROUP BY 学号, 姓名, 课程编号, 课程名称, 分数
);
```
3. **全连接查询**:
- 全连接(Full Join)用于显示所有左表和右表的记录,即使在另一个表中没有匹配的记录。
例子:显示所有可能的比赛组合
```sql
SELECT a.name, b.name
FROM team a, team b
WHERE a.name < b.name;
```
4. **自连接查询与比较**:
- 自连接是将同一张表作为两个不同的表进行连接,常用于解决涉及自身关系的问题。
例子:查询所有月份的发生额都比101科目相应月份的发生额高的科目
```sql
SELECT t1.subject
FROM TestDB t1
JOIN TestDB t101 ON t1.month = t101.month AND t1.amount > t101.amount
WHERE t101.subject = '101';
```
5. **聚合函数与子查询**:
- `COUNT()`, `SUM()`, `AVG()`, `MIN()`, `MAX()`等聚合函数用于统计和计算。
- 子查询可以在主查询中嵌套,用于获取中间结果。
这些知识点是SQL面试中常见的,掌握它们能帮助你在面试中应对各种SQL题目。同时,注意SQL性能优化也是面试中的重要部分,虽然在文档中未强调,但在实际工作中,编写高效的SQL语句是非常重要的。
3964 浏览量
2022-01-11 上传
119 浏览量
2024-07-15 上传
2021-12-30 上传
2022-01-11 上传
almost.Mr
- 粉丝: 0
- 资源: 3
最新资源
- react-window-ui:React组件用于快速演示窗口UI
- Business-Buddy:Business Buddy是CRM(客户关系管理)软件,可帮助公司的销售团队与潜在客户取得联系
- 行业分类-设备装置-一种接口性能数据实时监制方法和装置.zip
- homebridge-tcc:霍尼韦尔对Homebridge的Total Connect Comfort的支持
- Persepolis-WebExtension:用于Persepolis下载管理器的WebExtension集成
- 带adb插件的notepad++
- 行业分类-设备装置-一种接收天线阵列受损阵元的在线检测方法.zip
- 北航计组实验代码、电路(一).rar
- openrmf-docs:有关OpenRMF应用程序的文档,包括用于运行整个堆栈的脚本以及仅基础结构以及有关使用该工具的文档
- IEEE 30 总线系统标准:Simulink 中的 30 总线系统设计-matlab开发
- 行业分类-设备装置-一种接枝改性壳聚糖微球及其制备方法和应用.zip
- OM-128:ATmega1284开发板
- rohitprogate
- 进销存软件 小管家进销存软件 v5.5.11
- anroid8.1编译使用OpenJDK.tar.zip
- oSportServer