母语之外最简单的语言:SQL

第154篇文章 | 假装读懂程序猿系列 | SQL

1.SQL是什么

SQL(Structured Query Language),专业点说,它叫结构化查询语言。

通俗来讲,SQL就是程序猿给数据库打call时用的通关密语。

程序猿:“数据库数据库,把金库里黄金表的所有数据都拿给我!收到请回复!”

数据库:“报告报告,在金库里没有找到一个叫“黄金”的表。”

程序猿:“口误口误,是手表”

数据库:“收到收到”

在多数程序猿们心中,SQL算不上一种真正意义上的编程语言。从世界上最好的编程语言排行版就可以看出来,SQL被甩得远远的。

通常情况下,程序猿们可不想让产品汪看懂他们写的代码。毕竟,一旦因需求的缘故撕起来,代码可是他们的护城河。

你走你的阳关大道,我走我的独木桥。

但唯独在SQL上,程序猿和产品达成难得的共识:你产品学会多一点SQL,我技术就多省点功夫。

2.产品懂SQL有什么好处

如果你是一个自给自足,会用SQL去数据库里拿数据的产品,那好处多多:

1. 在数据收集需求下达阶段,减少沟通成本。

根据效果评估的指标,你大概已经知道上线后需要哪些数据,甚至知道它会放在哪里,数据源怎么关联。提前把需要的字段列出来,百利无害,可以大大减少与技术沟通的成本。

2. 上线前,数据埋点提前到库验收,避免踩坑。

这里的埋点粗暴点分,无非是前端埋点和后端埋点。前端埋点通常收集的是用户与产品产生交互的行为数据,这个数据通常通过第三方提供的接口SDK上报上去,无需存到自己的数据库当中,如谷歌统计,百度统计。后端埋点则是侧重一些跟用户属性或交易详情相关的数据,这些需要打点记录到数据库中。

因此,我们这里说的是后端埋点居多。如果在上线之前,你可以自个去数据库里验收埋点的数据是否跟需求下达时一致,就可以避免踩坑。否则上线后才发现数据没有收集到,再想去亡羊补牢的话,得等下个版本发布。

可见,产品懂SQL,可提前收货,节约亡羊补牢带来的时间成本。

3.上线后,自己要的数据自己取,自给自足,丰衣足食。

数据的提取对程序猿而言无非是连连表,最怕在是导完数据后,产品跟他们说还漏了一个字段,重新再跑一次。事虽小,但隔三差五地,难免会打断程序猿打码的灵感。

如果产品自己可以拉数据,那爱怎么加字段自己加,自给自足。程序猿只需要把表告诉产品汪,就完工了,大家一起开心。

大家都开心的事,何乐而不为呢。

3.SQL只是一个升级版的excel

那什么是数据库,它跟excel有什么区别?

1. 在数据的存放上,数据库和excel几乎没有差别。

数据库就是一张张升级版的excel。简单来讲,一个库是一个excel,一个excel里又可以建sheet1/sheet2,同样的对应地,一个库里可以有很多表。

但无论是数据库还是excel,我们操作空间的颗粒度都是以表为单位。

2. 在数据的操作上,excel是傻瓜式的可视化操作,而SQL不过是用描述性的语言来完成。

我们简单看看SQL是如何跟excel一一对应地:

如果我们想从一个名为”11月月考成绩单“的excel表中,筛选中高三16班英语成绩大于130分的学号及对应的英语成绩,并按该成绩从高到低排序。

excel操作:

打开excel,找到高三16班的工作表,选中英语成绩这一栏,按筛选,填条件,再选降序。

SQL操作:

Select"学号","英语"

From"11月月考成绩单中的高三16班"

Where"英语成绩大于130分"

Order by"英语" desc

可以看出,SQL的语法结构其实就一句话:要取什么,从哪里取,条件是什么,输出结果是否需要特殊操作(分组排序等)

一句话的语法结构,隔壁程序猿几乎就要脱口而出:世界上最简单的语言,除了母语就是SQL。

上面的操作再简化一点就是:

你要取什么:确定输出结果,两个字段,分别是学号及英语成绩,所以用select。

要从哪里取:from,库名+表名。

条件是什么:where,英语成绩大于130分。

降序排序:order by + desc(降序)

纵使条件再复杂一些,如涉及多个表,嵌套操作,分组等等,但还都是在这个结构上变通。理解了结构后,实操过程中遇到在认知范围内的疑惑,谷歌一下或请教万能的程序猿,还可以套乎下感情。

4.非专业SQL写手如何减低风险

虽然SQL很简单,但是专业的事情由不专业的人来做,它就会有风险,风险的隔方法通常有:

1.用从库而不用主库

不专业的你,万一写了一句性能无敌差的SQL,从而让数据库一直在那里查询。数据库的请求和响应资源是有限的,你的无效和不间断请求会影响其他人的请求,从而影响产品体验的正常运转。

因此,保险起见,你的SQL在备份库里跑。

2.不用在线库而用离线库

备份库里跑SQL也是不绝对安全,最安全的方法是,通过离线的库来跑。通常由数据中心部门将一线的业务数据库进行二次整合和抽离、存储,再提供给非技术部门使用。由于这些数据是二次存储的,它的优缺点也很明显,优点是会不影响线上业务,爱怎么玩怎么玩。缺点是线上数据的同步更新有一定的滞后性,可能我们只能查看前一天的数据。

常见的有,如Airbnb的开源项目superset。

3.由数据分析师帮你做

这可能是最简单的方法了,让数据分析师帮你做,然后你再去查看那些可视的视图,如powerbi、tableau等。当然,这里的沟通时间成本会很高。

最后,终于要结尾啦。

程序猿的世界是奇妙的,我们要多一点好奇心,探索属于我们的未知新领域。

END

About Me

至善叔叔

曾工地搬砖工

互联网管培生

过去的运营喵

现在的产品汪

不懂程序猿的产品不是一个好运营

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181118G0GK3600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券