第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
至善叔叔
曾工地搬砖工
互联网管培生
过去的运营喵
现在的产品汪
不懂程序猿的产品不是一个好运营
领取专属 10元无门槛券
私享最新 技术干货