我来科普一下SQL吧,看不下去了

好奇宝宝1314
原来以为华人里码工多,这么一看,真是少啊
j
justmoved
Mark
w
wr0124
谢谢好帖
a
aoiqa
很久以前用过“no SQL”, 现在好像没有人用了
herolover 发表于 2020-06-17 17:27

谁说没人用,search非结构数据不用nosql难道还能用sql?
w
wojiuaihuaban
mark mark mark
z
zclbobo
回复 49楼okyes的帖子
我学建筑的,这个完全没入门,所以多少希望能有个introduce to的课程能看看,我刚上了w3school,摆弄了一下发觉完全不知道在干嘛
Z
ZiDe其乐
sql
w
wojiuaihuaban
回复 1楼okyes的帖子
一看楼主就是个头脑清醒的硬核选手, 不知道为啥看起来很爽。 给你点个赞。 以后多上来科普啊。
赵蜀黍
难得一见有些干货的好帖子
tracysyn 发表于 2020-06-18 00:43

这也叫干货!外行真是好骗啊。
赵蜀黍
我想问的是MySQL 和sas的区别?我知道sas有做统计模型的部分好像MySQL 没有,其它方面呢?mysql 也有类似function ,macro, for loop 那些吗?是不是能做的没有SAS 多?谢谢
mangmang 发表于 2020-06-17 22:43

MySQL 是数据库。强在存取数据。 Sas是统计软件,强在数据分析。
芒果冰
我想问的是MySQL 和sas的区别?我知道sas有做统计模型的部分好像MySQL 没有,其它方面呢?mysql 也有类似function ,macro, for loop 那些吗?是不是能做的没有SAS 多?谢谢
mangmang 发表于 2020-06-17 22:43

我觉得最主要的区别是你的query 在哪run的,SAS的proc sql也好,用python做data wrangling也好,都是吧data先存到一个object里,拿python举例子吧我SAS不太熟,python的dataframe如果你locally run python相当于每个dataframe会occupy一定的memory. 我不太确定sas但是我感觉SAS你query executing也是software本身deal with object你连server的话连的是SAS的server,简单来说你的query并没有直接在data warehouse里面run. 好处也是有的,因为这样子的话你做join不用考虑data存在哪个db里,你可以把data pull到SAS/python里,join是在python/SAS里面进行的。坏处非常明显,假设你处理非常大的data, 假设你是locally run, 你电脑本身会决定你能run多大的data. 而且你把data存到object之后再做join, 你基本是不用table本身的key或者indexing的。而如果你直接run query在db里面的话,你才会真正利用到database/data warehouse的optimizer. 这种方式的话,麻烦之处就是如果你想join两张table, 而两张table在两个db, 你就需要build ETL
赵蜀黍
个人认为工作中学SQL挺值得鼓励的,但是想通过掌握SQL找工作,实在是有点不现实。DA要掌握的远远不止SQL。
另外,通常大家讨论的几种编程语言,我的一点浅见: 最底层效率最高最难的是C++,很多底层的协议都是C/C++写的,如果要求效率高占用资源少的,C/C++还是首选。 大公司商业平台大多数用Java,因为java有跨平台的优越性,同时效率也很高 数据处理,机器学习建模很多用Python,现在学习Python的人越来越多,是因为Python是高级的语言,入门简单,有很多库,尤其因为它是解释性的语言调试起来快速方便,很适合来做快速模型开发,但是工作中用Python的应该远低于前两个,Python的运行效率是非常低的,同样的问题,用Python跑,耗时比前两个多的不是一个数量级好吗?毕竟有多少人做模型开发,需要快速编程呢,大多数还是为大公司的商业系统搬砖吧。
总结就是做tech最核心的就是学习的能力,一般你掌握了一种语言,公司默认你可以通过自己学习很快掌握其他。

subrina 发表于 2020-06-17 21:27


我感觉正相反。Python 有很多magic, 比如 decorator, metaclass,理解几行magic 比读几百行直来直去的c/c++ Code难多了。
赵蜀黍
回复 1楼okyes的帖子
一看楼主就是个头脑清醒的硬核选手, 不知道为啥看起来很爽。 给你点个赞。 以后多上来科普啊。
wojiuaihuaban 发表于 2020-06-18 01:13

苍天啊,再一次表明能说的人到哪儿都占便宜啊。
t
tuolingphecd

我感觉正相反。Python 有很多magic, 比如 decorator, metaclass,理解几行magic 比读几百行直来直去的c/c++ Code难多了。
赵蜀黍 发表于 2020-06-18 01:23

之前一直用SAS分析数据,偶尔用用Stata, 现在正在学习Python,感觉有点不习惯
m
mckee
回复 1楼okyes的帖子
墙贴留名。 mark
c
cheeelgo
分享得很好👍非常贴近现实.
赵蜀黍
之前一直用SAS分析数据,偶尔用用Stata, 现在正在学习Python,感觉有点不习惯
tuolingphecd 发表于 2020-06-18 01:36

Python code 也要看谁写的。聪明人可以搞得很奥妙难懂。而c语言压根儿搞不出这么多花样。
i
ivy123
感谢!mark!
k
kelly82
给LZ点赞,简直就是疫情期间的一股清流啊👍希望华人以后多一些这种帖子。
i
icepowder
有兴趣以后读读,先mark
e
eling820
回复 1楼okyes的帖子
学习一下!马克马克!!
e
elaine_328
马克马克
y
yulingxi
👍👍👍
E
Emily2010
Mark
p
plainlake
有人问我,说最快的方法是啥 我个人觉得如果找DA的职位写sql的话,最快最有效的应该是刷oracle的certificate吧,要不然你怎么说服人家你会写SQL啊,你可能说当场写几句,那你也得能过简历关不是,如果简历上写着几个打酱油的证书在加上oracle的11g或者12c,应该勉强能晃一下hr的眼睛的。亮瞎不至于,至少保住你的resume不被扔进垃圾桶。拿到面试机会当然最好是刷题,leetcode上面关于SQL的那百来个题,就算背着也不难的,都是join 啊union啊或者select然后再倒腾出去一部分这种。
okyes 发表于 2020-06-17 16:41

谁能给一下“leetcode上面关于SQL的那百来个题”的LINK🔗吗?
多谢~!
h
huila
回复 52楼TheArchitect的帖子
库是什么?
l
luna930
Mark一下,谢谢楼主分享
v
violabb
Mark SQL
m
mirror0417
多谢分享
b
baymom
是吧,我就是看很多人本来有兴趣学,结果一堆不太精确的所谓科普把好容易站起来的大妈带沟里了,不忍心
okyes 发表于 2020-06-17 15:55

赞大妈之友👍
w
wsher
sql只是query的话,随便找本教材,甚至做完那个w3就可以入门了,再刷一下leetcode基本上可以去工作里学了啊
o
okyes
我想问的是MySQL 和sas的区别?我知道sas有做统计模型的部分好像MySQL 没有,其它方面呢?mysql 也有类似function ,macro, for loop 那些吗?是不是能做的没有SAS 多?谢谢
mangmang 发表于 2020-06-17 22:43

都有,你说这些都是SQL语言带的 比如mySQL里面有stored procedure,就是你见到的那种用begin 和end 封装起来的那种SQL,这个就是function,你可以先预编,然后存在数据库侧,然后你从其他程序可以直接调用,或者在mySQL里面也可以直接call这个函数。for loop和if这些也有。通常来说,写在procedure里面。但是有的人也直接写在嵌套的SQL里面,也就是不用begin 和end封装,你也可以嵌入。 sas的SQL和mySQL除了细微的句法差异,总体差不多。我用sas用的不多,也许有其他的玄机,我不清楚 mySQL的强大之处,我在前面说了,他的workbench很友好,可以直接生成SQL脚本,你画好relational的table图,定义好表格之间的主键外键和对应关系,他直接能给你生成脚本,其他SQL好像不能
o
okyes
苍天啊,再一次表明能说的人到哪儿都占便宜啊。
赵蜀黍 发表于 2020-06-18 01:25

不是能说,你要针对你的目标人群,也就是听众说,你说的再高深,听众表示一脸茫然,你不等于白说了吗?人家想知道SQL到底是个啥,入门难不难,你就讲讲门框在哪里,大概啥质地,高矮,能不能跨过门槛,磕着碰着会有多疼........ 你如果跟人家讲门框很高的,能扣篮那样的选手都不一定能摸着门框上沿,而且进了门一堆的坑,有的坑专坑爹,还有连环坑,还有机关玄弩。大哥人家不就是为了试试SQL而且未必真的要如何,你搞得跟盗墓笔记一样骇人听闻有意思吗?
o
okyes
谁能给一下“leetcode上面关于SQL的那百来个题”的LINK🔗吗?
多谢~!
plainlake 发表于 2020-06-18 04:22

https://leetcode.com/problemset/database/
l
lj0406
回复 1楼okyes的帖子
Mark mark mark
b
bnc
写得还是太多了,会吓退不少大妈。 其实sql 就一句: select something from place where condition, 比如 select id from huaren where gender="F"
哲仁布措
写得还是太多了,会吓退不少大妈。 其实sql 就一句: select something from place where condition, 比如 select id from huaren where gender="F"
bnc 发表于 2020-06-18 09:49

and dob>'12/31/1989' :)
3
3sons1girl
赞简洁易懂的科普!
w
wannaquit
回复 131楼okyes的帖子
mark mark mark!
l
lilpurple
弱弱的问下,多长的query算比较复杂的啊?
r
rubysayhi
写得很好啊 !!!!!!
K
Koshien
and dob>'12/31/1989' :)
哲仁布措 发表于 2020-06-18 09:55

笑死!
w
wfmlover
简单说,就是做DBA和用SQL处理数据的区别 前者是专门,门槛不低 后者是跟excel一样每个人都应该有的office技能而已

二十一
不错。
l
lovemykids
mark SQL
s
skyblue000
回复 1楼okyes的帖子
希望多一些这样的讨论
V
Vickyflower
逛华人是为了放松的,没想到看到了工作帖子。。。。
赵蜀黍
不是能说,你要针对你的目标人群,也就是听众说,你说的再高深,听众表示一脸茫然,你不等于白说了吗?人家想知道SQL到底是个啥,入门难不难,你就讲讲门框在哪里,大概啥质地,高矮,能不能跨过门槛,磕着碰着会有多疼........ 你如果跟人家讲门框很高的,能扣篮那样的选手都不一定能摸着门框上沿,而且进了门一堆的坑,有的坑专坑爹,还有连环坑,还有机关玄弩。大哥人家不就是为了试试SQL而且未必真的要如何,你搞得跟盗墓笔记一样骇人听闻有意思吗?
okyes 发表于 2020-06-18 09:35

我是惊诧于SQL可以跟硬核联系在一起。
m
melonm
有人用C# query SQL吗?C# 要不要换成python来写?
p
potato1113
回复 1楼okyes的帖子
数据库跟操作系统一样是个博大精深的天坑呀,而且是把各种算法理论发挥到极致的application。真正理论与实践完美结合。入门简单,精通的话可以看看postgres源代码,感受算法实现的精妙
s
sheisfree
马马马马马 多谢分享
哲仁布措
回复 147楼melonm的帖子
如果能骗到经费可以啊。反正都是化妆品,时髦的比较抓眼球。
赵蜀黍
有人用C# query SQL吗?C# 要不要换成python来写?
melonm 发表于 2020-06-18 12:37

what are you talking about?! 这些常用语言早就有现成的各种 database connection library 的。
赵蜀黍
回复 1楼okyes的帖子
数据库跟操作系统一样是个博大精深的天坑呀,而且是把各种算法理论发挥到极致的application。真正理论与实践完美结合。入门简单,精通的话可以看看postgres源代码,感受算法实现的精妙
potato1113 发表于 2020-06-18 12:38

数据库研发和使用完全两个不同范畴吧。楼主这里说的显然不是研发。
暖暖_恋尘
and dob>'12/31/1989' :)
哲仁布措 发表于 2020-06-18 09:55

dob>'12/31/1989' 这个日期是什么梗?
酱醋茶
我觉得你说的那些属于马工的活,我们的dba全会. 我们一共有一个马工,不知道他会不会那些
哲仁布措
回复 153楼暖暖_恋尘的帖子
跟前半句合起来只调出90后美眉资料,哈哈,你们00后在里面耶。
暖暖_恋尘
回复 153楼暖暖_恋尘的帖子
跟前半句合起来只调出90后美眉资料,哈哈,你们00后在里面耶。
哲仁布措 发表于 2020-06-18 12:48

哈哈哈,这个好玩!你那个跟帖里有2个点赞,其中有一个是我送的。大方吧我!LOL
g
giiry2003
足足的干货啊 mark mark
t
tracy66
mark.......................
m
miaozi
Mark干货
O
Olivialili
SQL query 很简单,很容易学会。但是全职SQL工作,会用是不够的,要会design各个表单之间的index,连接,效率优化,这个并不简单,很需要逻辑。
K
KOH
弱弱的问下,多长的query算比较复杂的啊?
lilpurple 发表于 2020-06-18 10:48

越多层的嵌套和join越复杂,不用很长也可以很复杂
小马和小猴
mark mark mark
t
ted.hanks

我感觉正相反。Python 有很多magic, 比如 decorator, metaclass,理解几行magic 比读几百行直来直去的c/c++ Code难多了。
赵蜀黍 发表于 2020-06-18 01:23

C++ 的template 也不到好懂啊。 而且一个typo 几百行的error message 。。。
s
salus4
Mark!!!!!!hao tie...
b
blue79
好帖,也讲讲怎么学习SAP好吗?
j
jzll
回复 41楼usbeautifullife的帖子
我上过sql的网课,UC系统的,老师讲得非常好,作业也很有针对性,简单的难得都有,有期中期末考,有project,大概9周时间吧,每周大概两三个小时。对于我这种没啥行动力的人来说网课非常好,有人讲解有作业push,当然因为是公司出钱,最后还得拿个certificate保证过了考试。总体来说比自己学习或者同事给我讲解跟系统更快上手。同意一个jms说的话,上身就很容易,想学得精的话需要多下功夫。整体来说,比Matlab上手简单。
h
huashan2018
越多层的嵌套和join越复杂,不用很长也可以很复杂
KOH 发表于 2020-06-18 14:01

对,两个outer join再来几个group by就足以干翻新手了。
龙涎香
这也能吵起来??
A
AkanaRika
多谢科普学习一下
c
cida
谢谢科普,很有需要!
B
BelleRLin
谢谢楼主,有意思!!
k
kengdie
以前回帖科普过,看到最近帖子很多人有误解,把好多想学习的大妈都吓退了,这个帖子就是写给那些门外观望的人了解一下SQL,大牛就不要笑话了。 SQL本身是一种语言,structure query language,严格的说不算编程语言。在学校也就是database这门课一学期课程里面的一节课的内容,有的老师干脆不讲直接带过。 编程语言大致分两种,一种是需要编译的,比如Java,要先把人写的代码编译成机器码然后执行,还有一种不需要编译的叫做解释语言,比如很多脚本语言常见的Javascript,这些,都是直接执行的。 而SQL连脚本语言都算不上,就是用词造句,或者叫做填空题? 所有的语句通常细分为4/5类 DDL – Data Definition Language,包括create,rename,alter,drop,truncate和comment DQl – Data Query Language 就是select语句 DML – Data Manipulation Language包括insert,delete,update等 DCL – Data Control Language包括grant,revoke 有的也把TCL单独算一类 COMMIT– commits a Transaction. ROLLBACK– rollbacks a transaction in case of any error occurs. SAVEPOINT–sets a savepoint within a transaction. SET TRANSACTION–specify characteristics for the transaction 好了,关于SQL就那么多,一共20来个语句都有固定的表达式,你说快一点的半个小时或者半天能不能学会,肯定能学会,记得住不,肯定记不住,所以具体用啥,就像查字典一样,查一下表达式,换一下变量,然后在嵌套循环就行了,很多公司的DA,每天也就写一下以上这些语句,而且集中在查询,删除,更新,三个里面,最多再加一个commit。没有了,你说简单不。这也是大部分公司的DA行情,因为价钱就在那里摆着的。和会用excel制表差不多。闷头写query基本上就差不多了。
用抖音快手里面那种段子的话说,你要再不会,我提着五花肉上你家教你做回锅肉。 好了,如果半天学不会的,我提着SQL上你家给你亲自做SQL?
======================= 此处为华丽的分界线,以下为和SQL相关的,但是本身不属于SQL的内容,我想到哪儿讲到哪儿
stored procedure 或者不同的平台叫法不一样,比如Oracle 里面又有function又有stored procedure。总之叫做函数。马工一般叫做库函数,因为只有他们在写数据库预编函数的时候用得多。 这个本身不属于SQL的内容,这一部分有点编程的味道了,如果说SQL是一门程序语言,也是因为有函数。也可以写循环嵌套,if else那一套都行。 这个函数比较死板,有固定的格式,类似于八股文,起承转合一样,所以文科大妈不必害怕。随手一放狗替换一下你需要的变量名称基本上就妥了。 你看很多人写resume除了写SQL一般都是 PL/SQL。
triger,index以及数据库一端的相关操作 这些也不属于SQL的内容,甚至和DA都没关系,这些属于马工的活儿,一般后台马工都会搞定这个,作为大妈完全可以不知道这部分。
normalization ER data mapping这些也不属于SQL本身,这个属于database层面的内容,这一部分也不是DA的活儿,是DS,或者马工的活儿,写SQL的知道知道表单之间的relation是必须的,因为你需要query不同的表单,然后各种join的活儿,所以需要了解relational database,但是实在是不知道问题也不大。至于ORM你完全可以不知道。
HQL 或者叫做hibernate 这个作为一个例子说说SQL的衍生语言,因为要和其他平台和语言很好的融合,所以有了HQL,就是在hibernate framework里面把 SQL作为string直接嵌入其他程序语言,作为DA大妈这个也完全可以不知道不懂,毫不影响你,当然,你写SQL总的有一定环境,很少让你对着SQL server或者像 mySql的workbench或者postSQL的pgAdmin写的。所以你知道HQL当然好,可以让你和其他马工搭配写SQL,你的看得懂把你写好的SQL往哪儿塞。就像做填空题一样。
好了先写这么多。





okyes 发表于 2020-06-17 15:50

mark mark
s
serbil
markmark