培训对象:
数据分析师/数据工程师(需跨平台处理数据)
数据仓库/大数据平台开发人员
后端开发工程师(需掌握多种SQL方言)
数据库管理员/DBA(扩展大数据技能)
准备从事数据相关工作的求职者
培训目标:
使学员系统掌握MySQL、Oracle、Hive、Spark SQL四种主流SQL引擎的核心语法与特性差异;理解关系型数据库与大数据SQL引擎在架构、优化、执行逻辑上的本质区别;熟练在不同平台间迁移SQL技能,能够根据场景选择合适工具;具备跨平台数据处理的实战能力,应对企业混合架构下的数据查询与分析需求。
培训内容介绍:
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能力在企业中的价值。