新足迹

 找回密码
 注册

精华好帖回顾

· 大头怀念的北京小吃(九)--炒肝 (2011-3-9) datou2z · 半日试车记 (2006-1-7) Ricky
· 榛子蛋白脆饼 (2010-2-11) cctang · 蝈蝈厨房之--Less is more(无肉 不喜勿进) (2010-10-8) t_guoguo
Advertisement
Advertisement
查看: 17377|回复: 155

[学习培训] 稍微谈谈SQL [复制链接]

发表于 2014-6-13 23:08 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整

做数据做了很多年,跟大家聊聊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,再深入就要了解其他数据库的种类,以及最近的热点。











评分

参与人数 8积分 +30 收起 理由
kaixin123 + 4 感谢分享
icicle + 4 感谢分享
mr.houseband + 2 感谢分享

查看全部评分

Advertisement
Advertisement

发表于 2014-6-13 23:21 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
对了,顺便说下,有兴趣讨论数据包括数据分析的,请加我们的QQ群:296434596

发表于 2014-6-14 00:12 |显示全部楼层
此文章由 FOR 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 FOR 所有!转贴必须注明作者、出处和本声明,并保持内容完整
正有兴趣学习呢,如果是个新手,有什么简单而实用的教材可以参考呢?

发表于 2014-6-14 00:16 |显示全部楼层
此文章由 Janet 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Janet 所有!转贴必须注明作者、出处和本声明,并保持内容完整
握手,我也用了很多年了,现在主要用在Teradata 和SAS里面。

发表于 2014-6-14 01:05 |显示全部楼层
此文章由 shareddesk 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 shareddesk 所有!转贴必须注明作者、出处和本声明,并保持内容完整
写得不错 思路很清楚啊 学习了

发表于 2014-6-14 21:59 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
FOR 发表于 2014-6-13 23:12
正有兴趣学习呢,如果是个新手,有什么简单而实用的教材可以参考呢?


其实教材因为太多了,每个领域其实都有可以深挖的东西,比如你做TERADATA,你可以看这家公司写的文档,肯定是最佳文档,因为这家公司对自家产品肯定最熟悉,如果你做SQL SERVER,微软也有很多书籍,每本书都几百页

但有没有一本书深入浅出把各种都介绍一遍的,我看来没有,因为这种大而全的书很难卖,定位不清楚,因此从个人角度,只能各种技术都自己去接触下,去学习下,所谓的没有书本的学习,因此,公司有时考察一个人,不仅仅是你学会了什么,更多是你的学习能力,学习力在IT行业非常重要。
Advertisement
Advertisement

发表于 2014-6-14 23:05 |显示全部楼层
此文章由 FOR 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 FOR 所有!转贴必须注明作者、出处和本声明,并保持内容完整
小V老师 发表于 2014-6-14 20:59
其实教材因为太多了,每个领域其实都有可以深挖的东西,比如你做TERADATA,你可以看这家公司写的文档, ...

谢谢啦,我不是做IT的,是会计。想学习一下SQL来提高自己的市场价值。

发表于 2014-6-15 04:00 |显示全部楼层
此文章由 zheng8001 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zheng8001 所有!转贴必须注明作者、出处和本声明,并保持内容完整
越来越多人现在对数据分析感兴趣啦

发表于 2014-6-15 09:53 |显示全部楼层
此文章由 dellachen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dellachen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
小V老师 发表于 2014-6-13 22:21
对了,顺便说下,有兴趣讨论数据包括数据分析的,请加我们的QQ群:296434596 ...

会计专业背景,现在做系统funtional/business analyst,学了一点sql的皮毛,考了oracle sql expert,对工作已经有很大的帮助了。想探讨一下进阶的话应该注重哪个方向

评分

参与人数 1积分 +4 收起 理由
Aries2012 + 4 感谢分享

查看全部评分

发表于 2014-6-15 12:29 来自手机 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
dellachen 发表于 2014-6-15 08:53
会计专业背景,现在做系统funtional/business analyst,学了一点sql的皮毛,考了oracle sql expert,对工 ...

进阶有很多方向,做ba本质是通过数据给商业决策,因此商业逻辑的培养非常重要,有机会可以去看看mba课程,从技术上,底层的数据依然有很多可以发挥的空间,你可以学些脚本语言,比如python,举个例子,你在公司是做seo的,主要分析ga数据,通常都是通过客户端直接看ga reports,有时把数据download下来,但如果你掌握了脚本语言,每天定时下载到数据库,你会有更多有趣的数据,灵活性和功能性大大提高


另外,有空学学r,往统计分析上走走,也有不少收获

发表于 2014-6-15 12:43 |显示全部楼层
此文章由 sh-boy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 sh-boy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
请问楼主,hadoop前景如何?在澳洲就业前景如何?谢谢

因为公司有些hadoop方面的training,还有就是Hortonworks Certified Apache Hadoop2.0 Administrator,这个证书在找工作方面的帮助。。。
Advertisement
Advertisement

发表于 2014-6-15 15:14 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
sh-boy 发表于 2014-6-15 11:43
请问楼主,hadoop前景如何?在澳洲就业前景如何?谢谢

因为公司有些hadoop方面的training,还有就是Horton ...


Hadoop本质是解决海量数据存储问题的,因为很多数据存了后没法用,所以用hadoop后,可以把数据存到hdfs文件系统,并用其他类似SQL的第三方工具来查询,因此是比较通用的大数据解决方案,同时计算能力也可以通过map reduce来分布化计算


澳洲不是大数据的地方,这个国家只有2000多万人口,因此无法产生海量数据,一般只有那些对用户行为有研究的公司(用户行为往往有海量数据)会对大数据有需求,学点hadoop还是有好处的,对linux系统会有点了解,对hadoop的存储有点了解,眼界广点,以后想方案的时候就会想的远点。


大数据这块,澳洲还在起步阶段,工作机会可能不多,但一旦有,工资肯定不低;但大数据在中国和美国,是通用配置了,你不会点大数据的语言,不会点hadoop,都不好意思在国内找相关工作。很简单,互联网技术来自于美国,互联网市场最大在中国,中美还是大数据最重要的阵地。澳洲么,正在起步中



评分

参与人数 1积分 +4 收起 理由
icicle + 4 感谢分享

查看全部评分

发表于 2014-6-15 15:38 |显示全部楼层
此文章由 sh-boy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 sh-boy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
小V老师 发表于 2014-6-15 14:14
Hadoop本质是解决海量数据存储问题的,因为很多数据存了后没法用,所以用hadoop后,可以把数据存到hdfs ...

谢谢V老师。。。看来公司提供的hadoop培训还是很有必要参加一下啦~~~

以后有问题再来问你~~~

发表于 2014-6-15 16:29 |显示全部楼层
此文章由 nali 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 nali 所有!转贴必须注明作者、出处和本声明,并保持内容完整
问一下,大家有用mongoDB 做项目的吗?能介绍一下吗?

发表于 2014-6-15 20:43 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
nali 发表于 2014-6-15 15:29
问一下,大家有用mongoDB 做项目的吗?能介绍一下吗?

你这问题不知道如何回答啊,好大范围,你要看MongoDB的介绍直接去官方网站就好了,要装MongoDB也很容易,MongoDB不是适合每个公司的,如果你的公司的数据需要大量join 操作的,是不适合的。总之,你的数据格式如果用Json比较方便,那你用MongoDB可能比较适合吧

头像被屏蔽

禁止访问

发表于 2014-6-15 22:05 |显示全部楼层
此文章由 悉尼好 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 悉尼好 所有!转贴必须注明作者、出处和本声明,并保持内容完整
好高级啊。

Advertisement
Advertisement

发表于 2014-6-15 22:30 |显示全部楼层
此文章由 juliez 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 juliez 所有!转贴必须注明作者、出处和本声明,并保持内容完整
mark

发表于 2014-6-15 23:12 |显示全部楼层
此文章由 116299603 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 116299603 所有!转贴必须注明作者、出处和本声明,并保持内容完整
dellachen 发表于 2014-6-15 08:53
会计专业背景,现在做系统funtional/business analyst,学了一点sql的皮毛,考了oracle sql expert,对工 ...

请问会计背景如何成为funtional/business analyst?

发表于 2014-6-15 23:25 |显示全部楼层
此文章由 Fernando 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Fernando 所有!转贴必须注明作者、出处和本声明,并保持内容完整
小V老师 发表于 2014-6-15 14:14
Hadoop本质是解决海量数据存储问题的,因为很多数据存了后没法用,所以用hadoop后,可以把数据存到hdfs ...

需求也不是没有,虽然人口少点。很多农业矿业服务业都需要大数据的解决方案。但是这块现在没有现成方案,自主研发投资太大,澳洲本地的公司还没太多投入的动力。真要投入广泛实用应该还早。听说4大银行里有大数据的分析了?
Seek上有相关的职位offer还是很不错的,看过几个都是160k+的,没有身份都可以帮着办。
like hell

发表于 2014-6-15 23:31 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Fernando 发表于 2014-6-15 22:25
需求也不是没有,虽然人口少点。很多农业矿业服务业都需要大数据的解决方案。但是这块现在没有现成方案, ...


这块方案挺多的,但懂得人真心不多,举个例子,亚马逊的AWS其实已经提供了非常好的大数据方案了,但只限于基础架构方面,不过公司往往对AWS的整个体系也不是很了解,也不知道如何改造自己的代码。这块人才其实中美很缺,澳洲我看不出来很缺,在我看来,澳洲对数据的需求目前还停留在1和2两个层次,也就是数据的整理(ETL)以及数据的报表(各种报表工具使用等),往上走的层次不多,因为他们也不知道往上能走什么,另外,往上走的基础又没有,因为很多用户行为的数据都没有,没有不是他们不想要,因为他们觉得投入太大,不知道投入产出比如何。

做大数据的人一般比较了解社区,大数据本身来自于开源社区,其实很多方案已经有开源项目是可以使用的,只不过大数据的解决方案一般从底层到上面,涉及的面比较多,比较复杂,澳洲很多公司都不大,所以真正能用到大数据的,也是几个公司而已了


发表于 2014-6-15 23:32 |显示全部楼层
此文章由 ggt20 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ggt20 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Fernando 发表于 2014-6-15 22:25
需求也不是没有,虽然人口少点。很多农业矿业服务业都需要大数据的解决方案。但是这块现在没有现成方案, ...

的确有吸引力啊,想学习大数据分析,有没有比较系统的书目呢?多谢!
不忘初心,方得始终
Advertisement
Advertisement

发表于 2014-6-15 23:38 |显示全部楼层
此文章由 Fernando 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Fernando 所有!转贴必须注明作者、出处和本声明,并保持内容完整
小V老师 发表于 2014-6-15 22:31
这块方案挺多的,但懂得人真心不多,举个例子,亚马逊的AWS其实已经提供了非常好的大数据方案了,但只限 ...

澳洲我看到的职位应该都是咨询公司的,据我所知确实没太多客户需求,咨询公司想先积累一点相关资源吧。至少我们公司和oracle都找不到一个用big data的本地客户
中国美国的需求让人羡慕啊,连big data appliance都得卖出去
like hell

发表于 2014-6-15 23:47 |显示全部楼层
此文章由 jImBO 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jImBO 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2014-6-15 23:54 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
ggt20 发表于 2014-6-15 22:32
的确有吸引力啊,想学习大数据分析,有没有比较系统的书目呢?多谢!

我一直认为,如果做IT还老想着什么书目,已经落后一大截了,互联网时代,知识都来自于互联网,即使有书,也只能讲一小部分,甚至讲了,可能也马上过时了

互联网时代,学习力是很重要的,所以没有书,最好的书就是各个文档,大数据看起来比较复杂,其实看透些东西后,也就那么回事。你做网站分析,应该都用过GA,GA就是个大数据方案,但普通人看不出来

举个例子,GA的数据是通过你网站代码里面调用它的API,事实上是把你的数据传到了GA服务器上,GA的服务器就是基于改造的hadoop 平台的,hadoop需要读写文件,因此IO会成为瓶颈,FACEBOOK和GOOGLE都用了一套方式,map reduce的时候都不用访问文件,直接用内存cache,因此查询速度非常快,于是GA的report就是基于这套系统,使得你可以非常轻松的选取不同的日期后,返回当时的报表。

另外,你也可以直接连到GA的服务器,通过写PYTHON语句返回数据,然后你把这些数据存到你的大数据解决方案,比如一个hadoop集群中,那你也可以实现一套自己的大数据方案。

所以,表面上看GA是这么回事,挖下去就是另外回事,里面的所有细节,是没有书本教你的,你问我怎么知道?看GA的文档,凭借自己的理解,逐渐就懂了,懂了1个后,你就会懂第二个,因为,大多数方案,都是八九不离十的。



发表于 2014-6-15 23:55 |显示全部楼层
此文章由 merry43 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 merry43 所有!转贴必须注明作者、出处和本声明,并保持内容完整
学习啦。

发表于 2014-6-15 23:57 |显示全部楼层
此文章由 蒙面超人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 蒙面超人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
谢谢LZ的讲解!好奇的问一句,作为software developer,雇主一般期待你对database有多大程度的认识?
Advertisement
Advertisement

发表于 2014-6-16 00:02 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 小V老师 于 2014-6-15 23:32 编辑
Fernando 发表于 2014-6-15 22:38
澳洲我看到的职位应该都是咨询公司的,据我所知确实没太多客户需求,咨询公司想先积累一点相关资源吧。至 ...


其实我挺想去做大数据咨询的,无奈澳洲机会太少了,其实国内懂大数据的 我感觉不多,很多人比较急躁。做大数据,其实需要从底层往上都走一遍,有IT的内容,有分析的内容,也有商业方面的内容,现在的很多咨询,往往就懂一块,没法结合起来思考,最后的方案定出来,可能IT满意了,做分析的就不满意,做运营的更不满意。也可能相反。

米国现在有个职位叫做data scientist,本质就是比IT的懂数据,比做数据的懂IT。我坚持认为10年内可能会出现另外个职位,叫做business scientist,本质是比IT数据的懂商业逻辑,比做市场懂商业的更懂数据IT。 这行很有趣,属于不断探索学习着的行业,待遇么,专业工里面算不错了。国内top的咨询顾问也能有60,7十万的样子。刚毕业的学生如果是top 公司基本也有20万以上待遇,这行涨工资很快,10%是基本线,人聪明的,最近几年30%涨薪幅度一点也不夸张

至于澳洲么?一个萝卜一个坑,我幸好现在有个坑,但总没国内时候的自信,相比每天收到美国猎头的信件,澳洲猎头基本不怎么鸟我,以此可见,澳洲的大数据还在路上

评分

参与人数 1积分 +4 收起 理由
gter8009 + 4 感谢分享

查看全部评分

发表于 2014-6-16 00:08 |显示全部楼层
此文章由 小V老师 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小V老师 所有!转贴必须注明作者、出处和本声明,并保持内容完整
蒙面超人 发表于 2014-6-15 22:57
谢谢LZ的讲解!好奇的问一句,作为software developer,雇主一般期待你对database有多大程度的认识? ...

作为开发人员,你怎么也得知道如何连数据库吧?如果我面试你,我会问几个问题关于数据库的问题:

1. 你擅长什么语言,在这个语言下,如何连接数据库

2. 会设计分库分表么?(这个是加分项,假设你海量数据有并发的时候),换句话说,你会在集群模式下做数据库架构么?

3. 通常用什么数据库? MySQL,ORACLE (自有数据库),AWS(云端数据库)? 这三项每个说一项明显特征

4. 问下SQL的一些语句,以及一些数据库的基本常识,比如索引啊,JOIN啊之类的


以上是开发人员对数据库的基本要求,作为开发,其实对数据库要求挺简单的,很多时候只要知道connection string是什么就好了,但开发也看你是什么开发,你做应用程序和做数据库维护的程序开发要求可不是一回事

评分

参与人数 1积分 +3 收起 理由
蒙面超人 + 3 感谢分享

查看全部评分

发表于 2014-6-16 00:14 |显示全部楼层
此文章由 蒙面超人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 蒙面超人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
小V老师 发表于 2014-6-15 23:08
作为开发人员,你怎么也得知道如何连数据库吧?如果我面试你,我会问几个问题关于数据库的问题:

1. 你 ...

谢谢,我说的是软件开发。

发表于 2014-6-16 00:19 |显示全部楼层
此文章由 ggt20 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ggt20 所有!转贴必须注明作者、出处和本声明,并保持内容完整
小V老师 发表于 2014-6-15 22:54
我一直认为,如果做IT还老想着什么书目,已经落后一大截了,互联网时代,知识都来自于互联网,即使有书, ...

不得不承认,的确是落伍不少年了,还习惯于看书本学习,文档太多,乍一看基本没有头绪,但楼主说的对,书本上多是概念和皮毛的东西,要理解掌握还得自己动手玩。网站数据分析基本没做过,所以看样子得先学习一下GA。
不忘初心,方得始终

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部