一、SQL(结构化查询语言)
- SQL的分类:
基本需要了解的:MySQL(99SQL) 、HQL(HiveSQL)、SparkSQL、ImpalaSQL、Oracle
- SQL的应用:
MySQL数据库用于存放元数据较多、小公司主要用MySQL(比较多) 用的SQL是标准SQL;
Oracle 数据库用于存放公司的业务数据,交易数据。 用的也是标准SQL (其中和MySQL中的字段类型有一些区别)
Hive 一般是用来做数据仓库的(做大数据的基本上需要用到)查询时用的HQL (面试问的HiveSQL和标准SQL有哪些区别较多)
Spark 一般对实时性要求高的公司用(面试问的比较多的时SparkSQL和HiveSQL的区别)
ImpalaSQL项目中有写到的需要重点去查下SQL(ImpalaSQL它最关键的是不支持update,还有时间类型公司一般用varchar还是timestamp)
二、MySQL知识点:
1. 通用模块:
整体概念;
执行流程和书写流程(主要是执行流程);
字段类型、建表、删除临时表、视图;
查询语句较多(笔试或者面试过程中需要手写)
推荐习题练习:https://www.cnblogs.com/zhangkaimin/p/11052469.html
- 索引模块:
基本上是靠记忆:不需要当场写索引创建
索引的好坏直接影响数据库的性能;
- 事务模块:
事务时决定程序的稳定性、靠临场发挥,能说出来多少是多少
ACID属性知晓
- 锁模块:
也是靠现场表达的能力
锁按照不同的方式分为不同的类型的锁
比如按操作类型分为读锁、写锁
按照操作粒度分为行锁、表锁;
- 日志模块:
主要是做数据同步用的、一般问到这里就会顺带问主从复制
- 性能调优模块:
这个是亮点:也是能记住多少就说多少
需要说明在什么业务背景下,进行了哪些方面的调优,调优后性能提高了多少;然后就是说还了解过哪些方面的调优。。。
三、HQL知识点:
1. 查询模块:
推荐练习题:https://blog.csdn.net/qq_41568597/article/details/84309503
- 窗口函数模块:
主要是:row_number over(partition by … order by … )
其他的进行了解
- UDF模块:
写过哪些UDF函数,实现的业务是什么
写UDF的步骤说说
4. 数仓模块
数仓中的增、全量抽取数据,如何抽取
拉链表怎么做的。
- 性能调优
是如何调优,都是怎么调的(调的参数、配置信息、存储、HQL);
能说出来多少就说多少;尽量往细说,需要质量!
四、SparkSQL
1. 调优模块:
主要是如何调优
总结:
- 最主要的还是需要多练习有效SQL(别天天select * from tb,需要找一些多表联查的SQL ,公司中用到的多表联查较多,特别是LEFT JOIN)