|
做数据做了很多年,跟大家聊聊SQL,一个简单又不简单的技术。
说到SQL, 很多CS专业的笑了,觉得这个好简单,记得大二的时候我们学数据库,先从范式讲起,讲到数据库调优,其中的课程作业就是SQL练习题,以至于后来面试,问SQL我都很自信,不过知道的越多,发现SQL说简单也简单,说难也难。
简单是因为其语法,事实上,你只要掌握SELECT,JOIN等基本语法,基本80%的SQL任务都能完成了,说它不简单其实是因为现在的IT变化太多,数据库也很多,语言的背后是各种IT产品和服务,因此需要你有比较宽阔的知识面,很多面试的时候表面上是考SQL,实际上是看你对各种数据库产品的掌握程度,以及一些细节
最初级的关于SQL,一般就是关系型数据库,你有能力可以建立跟关系型数据库的SQL连接,然后执行SQL语句取得数据,这个是属于初阶的,但很实用,很多银行工作的人,如果你已经烦透了数据都是从EXCEL准备好的,或者是别人给你准备好的,但自己的工作进度经常被人牵制着,你可以学学SQL,自己从数据库取数据,你要学会的无非是如何连接数据库,以及执行基本的数据查询。很简单,但很实用。难点可能在于不同的数据库产品会有些不同,比如你用EXCEL连ORACLE还是微软的SQL SERVER,比如你是用ODBC连还是JDBC连等等,里面会有些细节的难点
上面的SQL,更多是简单的应用,稍微复杂点的SQL,就涉及到ETL过程(数据整理和清理)了,ETL也是取决于你公司的IT架构的,有些公司的ETL是基于大数据,基于hadoop的,一般这样的公司相对比较大,类似国内的阿里巴巴等都是这类技术,大量的数据人员本质上在底层维持海量的数据,写不同的SQL,包括python脚本来维持自动化的ETL工作(数据清理工作)。这里面的难点也是因为我们有太多的可实现产品,比如SQL SERVER也有自己的ETL 流程,ORACLE也有,有些ETL甚至不用你写SQL,但即使你不用写,你也要懂里面的逻辑,这个层次的SQL,往往会和大量的脚本语言结合起来,完成自动化的过程
另外个稍微复杂的SQL就是需要加入商业逻辑了,这部分往往是分析师写SQL,甚至建模,都是需要将原始数据准备成我们需要的数据,而且SQL也可以写一些简单的数据模型,比如亚马逊的推荐主要基于ITEM BASED协同过滤,事实上,这样的算法是可以用SQL来实现的。另外,在做分析的时候,我们很多时候需要理解商业规则,并把这些部分都体现在SQL语句中,这时候,往往一个SQL语句是不行的,我们往往会建立大量的临时表,最后那张表才是我们真正需要的,建立模型往往是两者结合的,用SQL产生所需要的数据,然后部署的时候再用某些算法。
其实SQL本质上是一个取数的标准化工具,这个工具是通往关系型数据库的唯一选择,也因此非常重要,因为我们的数据大多数是基于关系型数据库的,可随着IT的发展,我们越来越多出现一些其他可选择的数据库,类似现在比较火的NoSQL数据库就是一个例子,事实上,虽然它并不支持标准的SQL语句,名字也叫做NoSQL来撇清和SQL的关系,可与我看来,本质都是访问数据库的工具,很多概念也有相应的对应,比如NoSQL里面叫做collection,对应到SQL就是table。 学习SQL,再深入就要了解其他数据库的种类,以及最近的热点。
|
上一篇:拿到了H&R BLOCK税季的OFFER,希望有做过的前辈分享一下经验和刚开始容易犯的错误下一篇:>>要读NAATI的同学慎选某翻译培训机构<<
|