-
SQL标准与各平台概述
SQL标准演进(SQL-92/SQL-99/SQL:2003/SQL:2016);关系型数据库 vs 大数据SQL引擎核心差异;四种平台定位对比:MySQL(OLTP关系型)、Oracle(企业级关系型)、Hive(批处理数据仓库)、Spark SQL(内存计算引擎);各平台适用场景与选型指南。
-
开发环境搭建与基础查询
MySQL安装与客户端配置;Oracle环境与SQL*Plus使用;Hive环境搭建与Beeline连接;Spark SQL环境(Spark-shell/Thrift Server);各平台第一个查询:SELECT * FROM table;通用SELECT语法结构对比。
-
数据类型与函数差异
数值类型对比(MySQL INT/Oracle NUMBER/Hive INT/Spark Integer);字符串类型(MySQL VARCHAR/Oracle VARCHAR2/Hive STRING/Spark String);日期时间类型及处理函数差异;NULL值处理在各平台的异同;类型转换语法对比(CAST/CONVERT/隐式转换)。
-
条件过滤与运算符
WHERE子句通用语法;比较运算符(=, !=, <>, >, <, >=, <=);IN与NOT IN(注意NULL处理差异);BETWEEN范围查询;LIKE模糊匹配与通配符;正则表达式支持程度对比;逻辑运算符(AND/OR/NOT);各平台条件短路逻辑差异。
-
排序与限制查询
ORDER BY排序(ASC/DESC/多字段);MySQL的LIMIT语法;Oracle的ROWNUM与FETCH FIRST语法;Hive的LIMIT(需注意strict模式);Spark SQL的LIMIT与排序优化;各平台分页查询实现对比。
-
聚合函数与分组查询
聚合函数通用语法:COUNT/SUM/AVG/MAX/MIN;COUNT(*)与COUNT(列)区别;各平台对DISTINCT聚合的支持(COUNT(DISTINCT col));GROUP BY分组语法;多字段分组;HAVING分组后过滤(与WHERE区别);各平台分组函数扩展(Oracle的ROLLUP/CUBE/GROUPING SETS、Hive的WITH CUBE/ROLLUP)。
-
多表连接查询
连接类型通用语法:INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN;MySQL对FULL JOIN的支持(需UNION模拟);Oracle的NATURAL JOIN与USING子句;Hive的JOIN优化(MapJoin/Bucket Join);Spark SQL的SMJ(Sort Merge Join)与BHJ(Broadcast Hash Join);多表连接执行计划差异。
-
子查询进阶
子查询分类:标量子查询、列子查询、行子查询、表子查询;WHERE中的子查询(IN/EXISTS/ANY/ALL);SELECT中的子查询;FROM中的子查询(派生表);相关子查询与非相关子查询;Oracle子查询特殊语法(WITH);Hive对子查询的支持限制;Spark SQL子查询优化。
-
集合操作
UNION与UNION ALL区别与使用;Oracle的INTERSECT/MINUS;MySQL模拟INTERSECT/EXCEPT的方法;Hive的UNION ALL与UNION;Spark SQL的集合操作支持;集合操作注意事项(列数/数据类型/排序)。
-
窗口函数
窗口函数概念与语法(OVER());各平台窗口函数支持对比(MySQL 8.0+、Oracle全支持、Hive 0.11+、Spark SQL全支持);ROW_NUMBER/RANK/DENSE_RANK排名函数;LAG/LEAD前后行访问;SUM/AVG等聚合窗口函数(累计计算/移动平均);PARTITION BY与ORDER BY组合;窗口帧(ROWS/RANGE)定义;Oracle分析函数扩展。
-
高级查询特性
MySQL的GROUP_CONCAT聚合连接;Oracle的LISTAGG与PIVOT行列转换;Hive的侧视图(LATERAL VIEW)与explode函数;Spark SQL的PIVOT与高阶函数;各平台正则表达式函数对比;递归查询(Oracle CONNECT BY vs MySQL 8.0 CTE)。
-
数据操作语言(DML)
INSERT基本语法;批量插入(MySQL扩展语法/Oracle INSERT ALL);INSERT INTO ... SELECT;UPDATE与DELETE语法;Oracle的MERGE语法(UPSERT);MySQL的REPLACE INTO;Hive的INSERT OVERWRITE与动态分区插入;Spark SQL的DataFrame写入与SQL DML。
-
事务与一致性
MySQL事务支持(InnoDB引擎)与隔离级别;Oracle的MVCC与读一致性;Hive事务支持限制(需特定配置);Spark SQL事务特性;各平台ACID特性对比;锁机制差异。
-
性能优化基础
MySQL执行计划(EXPLAIN)解读;Oracle执行计划(DBMS_XPLAN);Hive执行计划(EXPLAIN)与Tez/Spark执行引擎;Spark SQL执行计划(Spark UI/explain);各平台优化器特性对比(CBO/RBO);索引在优化中的作用差异。
-
分区与分桶优化
MySQL分区表(RANGE/LIST/HASH);Oracle分区技术;Hive分区表概念与管理;Hive分桶表(CLUSTERED BY);Spark SQL对分区的处理;分区裁剪(Partition Pruning)原理;各平台分区优化策略。
-
存储格式与性能
MySQL存储引擎(InnoDB/MyISAM)对比;Oracle表空间与段管理;Hive文件格式(Text/Sequence/Parquet/ORC)对比;Spark SQL对Parquet/ORC的支持;列式存储优势;压缩算法选择(Snappy/Zlib/LZO);各平台存储格式与性能关系。
-
数据采样与统计
MySQL的TABLESAMPLE支持;Oracle的SAMPLE子句;Hive抽样查询(桶表抽样/数据块抽样/随机抽样);Spark SQL的表采样;统计信息收集(ANALYZE TABLE)在各平台的实现;统计信息对优化器影响。
-
Hive与Spark SQL特殊语法
Hive的HQL特性:侧视图LATERAL VIEW、explode函数、collect_list/set聚合;Hive的自定义函数(UDF/UDAF/UDTF);Spark SQL的DataFrame API与SQL互操作;Spark SQL的高阶函数(transform/filter/exists);Hive与Spark SQL执行引擎差异(MapReduce/Tez/Spark)。
-
实战案例一:跨平台数据迁移与验证
场景:MySQL业务库数据同步至Hive数仓。任务:MySQL导出(SELECT INTO OUTFILE)→Hive建表(分区/存储格式)→LOAD DATA导入→数据量对比验证(COUNT)→关键指标聚合计算一致性校验→性能对比测试。
-
实战案例二:Oracle存储过程改写为Spark SQL
场景:Oracle存储过程迁移至Spark SQL。任务:理解Oracle存储过程逻辑(游标/循环/临时表)→识别可转换部分与需重构部分→PL/SQL与Spark SQL语法差异分析→使用Spark SQL的CTE和窗口函数重写逻辑→性能验证与优化。
-
实战案例三:多源数据关联分析
场景:MySQL用户表与Hive订单表关联分析。任务:MySQL数据通过Sqoop同步至Hive→Hive中创建用户临时表→Spark SQL读取Hive表(用户+订单)→复杂关联查询(多维度聚合)→结果导出至MySQL供报表使用→全流程性能优化。
-
实战案例四:SQL语法兼容性改造
场景:Oracle SQL迁移至MySQL/Hive/Spark。任务:识别源SQL中的Oracle特性(层次查询CONNECT BY/PIVOT/分析函数)→寻找目标平台的等价实现方案(递归CTE/CASE WHEN聚合/窗口函数)→改写SQL并验证结果一致性→性能对比测试→输出SQL迁移指南。
-
课程总结与技能图谱
四种SQL引擎核心语法回顾;各平台特性对比总结;SQL迁移心法;SQL学习资源推荐;后续进阶方向(SQL优化专家/数据仓库设计/大数据开发);跨平台SQL能力在企业中的价值。