SQL是一名数据分析师的重要工具,但需要将其掌握到何种程度呢?网上的SQL教程动辄就是教科书般的堆砌内容,不管有用没用,统统来一次完整介绍,完全没有从一个用户角度去开发教程。
从实用角度来讲,对于软件的掌握程度也是符合二八原则的,即20%的功能可满足80%的需求。为了最大化投入产出比,节约大家的宝贵时间,本文结合数据分析实际情况,将SQL知识点分为了必修和选修内容。其中,必修是数据分析师必须会的,而选修则是可能会用得上的,不属于本文内容的知识点则是几乎用不上的。
SQL作为一门针对关系型数据库的结构化查询语言,其是与数据库进行交互的底层会话语言。它的功能主要可以分为数据定义、数据操纵、数据控制三类,每一类下面又会包含不同的功能。
但是,作为一名数据分析师,我们的工作职责决定了我们是数据使用者,我们所需学会的功能更多体现在应用层面,那些偏底层的技术基础,是有专门的数据开发或DBA来处理的。
数据分析师对于SQL的掌握大纲具体如下图所示。本文只对各知识点做大纲性地介绍,在后续文章将逐一进行详细介绍。
对于SQL已经入门了的同学,这部分内容想必是会了的,差别只是熟练度而已。
(1)数据查询
数据查询即为从表中查询出我们所需要的数据,这里的查询既包含筛选性查询,也包含分组聚合性查询。数据查询的原理无外乎就是对SQL语言中几个关键字的使用,它的难点在于如何找到实现结果的逻辑方法。
(2)函数应用
SQL中的函数和Excel中的函数原理一样,是对数据进行处理的方法。我们主要用到的有聚合函数、日期和时间函数、字符串函数、其它函数等。需要注意的是,不同数据库所支持的函数和函数用法会有区别。
(3)基本优化
数据量小时,SQL优化的必要性显得不是那么高。但在大数据时代,没有哪一家公司业务数据库中的数据会低于百万级了。因此,掌握基本的SQL优化还是很有必要的。
基本优化主要是改善SQL语句执行效率低的问题,譬如调整SQL语句、建立索引等,复杂的优化交给专门的DBA就行了。
选修中的内容在很多公司都是由专门的DBA或数据开发人员来完成,数据分析师一般都不具备相应的权限。但也还是有一些公司对于这一块的岗位职责分工的不是这么细,数据分析师往往也承担着部分数据开发的职责。下面是一些常见的选修内容。
(1)增、删、改
它包含表和数据的增、删、改。例如,在建设数据仓库时,ODS层的数据写入DW层时,就需要新建相应的表;而且还得按照固定频率去更新DW层表中的数据。
(2)索引
索引是数据库用来提高性能的常用工具,它是通过对表中一列或多列的值进行排序,使得查询可以变得更快。索引的本质就是书的目录。
(3)视图
视图是一种虚拟的表,它并不在数据库中存在,它本质就是存储在数据库中的SQL语句。
对于使用者来说,他完全不用关心视图是怎么来的,将其作为正常的表对待,只需让DBA保证视图数据的准确性和及时性就够了。
(4)变量
变量分为局部变量和全局变量,它一般用作参数去给字段赋值,即将变量的值反过来赋值给字段。它的应用范围也比较广,特别是在存储过程中。其作用也比较明显,在查询优化和便捷性方面都是一个不错的选择。
(5)存储过程与函数
存储过程和函数时事先经过编译并存储在数据库中的一段SQL语句集合,调用存储过程和函数可以简化开发人员的很多工作,减少数据在数据库和服务器之间的传输,提高数据处理的效率。但也正如其名,它主要是用在数据的存储方面,即数据的增、删、改上面。
(6)触发器
触发器是与表有关的数据库对象,可以理解为当条件满足时,就执行触发器中定义的语句集合。实际中有很多平台其实已经将这些功能开发成软件了。
剔除文中的必修和选修内容,SQL的功能点自然是还有很多的。但对于一个数据分析师来说,那些功能真的有用吗?至少在我接触的好几家公司里,用到的全都是必修内容,选修中内容几乎用不上,就更别提本文没提到的功能了。
因此,每个人都需结合自身实际情况来梳理自身的知识体系,厘清哪些是必修课程哪些是选修课程,而哪些是没有必要去学的!我们的时间都很宝贵,希望都能用在正确的事上!