帝国的黄昏:SQL是世界上最牛逼的语言

来源 | 飞总聊IT

640?wx_fmt=png


关系代数诞生于1969年,甲骨文诞生于1978年。这期间的历史很漫长,所以本系列文章等甲骨文上场起码还有好几个章节。


由于历史都比较久远,在我出生前,查史料非常的辛苦,这个系列写的很慢。


我这个标题暴露了我具体想要讲啥。而且我相信有无数多人不同意我的观点。但是没办法, 我是做数据库系统的,我对SQL的崇拜有如滔滔江水,绵绵不绝。再加上我是写文章的,自然是我想用什么标题就用什么标题了。


IBM对祖师爷Edgar Frank Codd的关系模型的态度很暧昧:不拒绝,不反对,但是也不给钱做系统。现在回头去看究其原因是怕影响了自己已经有的IMS这个层次模型数据库的钱。


但是,Codd也是一个非常顽强的人,他就去找IBM的大客户,给大客户们洗脑说关系数据库才是未来,层次是过去。大客户们被洗的都信了关系代数神教以后就回头找IBM,说赶紧给爸爸们做一个关系数据库出来。


IBM不怕Codd,但是经不住客户金主爸爸们反复要求,就在自己的Future System里加了一个新的研究对象:System R。Future System项目是IBM1970年前后开展的一个大型研究项目,为的是开发出革命性的新软件和硬件。当时如日中天的IBM可谓浩浩荡荡的撒钱。


640?wx_fmt=png


System R是数据库历史上有标志性意义的一个系统。我们以后还要专门讲到它。System R团队成立于1973年。里面包括了后来很多在数据库圈里声名显赫的人,包括后来的图灵奖获得者Jim Gray。当然,也不知道IBM怎么想的,IBM把System R团队和Codd给隔离开来了。


1974年的时候,Donald Chamberlin和Raymond Boyce发表了一篇论文:SEQUEL: A structured English query language。为了给大家看看这篇论文怎么样,我特意去ACM的数据库里搜了一下,截图如下:

640?wx_fmt=png


那为什么SEQUEL变成为SQL了呢?是因为IBM发现原来SEQUEL居然是英国一家公司的注册商标,于是就只好改了。再后来,IBM为了和Ingres竞争(以后会讲),抢先把SQL提交给标准委员会。于是SQL的全称也偷偷的换成了Standard Query Language---一个更为霸气的名字。


我想这个世界上大部分计算机程序员,DBA,数据科学家,数据工程师等等,多多少少都会写点SQL查询:SELECT ... FROM ... WHERE...。SQL诞生于1974年,又被如此广泛应用,所以我还是觉得它是全世界最牛逼的语言。


640?wx_fmt=png


Codd在提出关系模型的时候,论文里有一个查询语言叫Alpha。但是因为和System R的人员隔离,对方又发明了SQL。到底是Alpha好还是SQL好呢?


历史上另外一个图灵奖获得者Michael Stonebraker在他的系统Ingres里使用了类似Alpha的查询语言,所以有人觉得IBM再发吗SQL是傻逼行为。


才写了三篇文章,已经跳出来三个未来的图灵奖获得者了。数据库领域一共有四个图灵奖获得者,他们先后都会反复出现在这个系列里。


从我个人的看法来说,SQL这个语言入门简单,但是如果想要写复杂的查询,那就是天堑一样的鸿沟。所以这样的语言是不是设计合理是见仁见智的。


但是SQL有一个问题,它和关系代数是不一致的。它的SELECT是关系代数里面的的PROJECT。关系代数里面的SELECT是它的WHERE 和HAVING。如此的不一致性,对初学者是困惑。


SQL还继承了关系代数最大的一个坑:NULL。简单来说关系代数是三元关系:TRUE, FALSE, NULL。而不是常见的两元关系。这里引入NULL之后带来一系列复杂的规则变化,是SQL最大的坑之一。


作为一个做数据库的人,如果没有因为修NULL相关的bug而苦思不得其解的话,作为一个用数据库的人,如果不清楚NULL有多坑人的话,都是不合格的。


Raymond Boyce发表完论文的当年就因为动脉瘤去世了。Donald Chamberlin则独享了SQL的荣光。他因为SQL获奖无数,成为了ACM fellow, IEEE fellow,IBM fellow,美国工程院院士等。我在2008年去IBM实习的时候见到了Donald,当时从照片看到真人的时候,真有跪了的冲动。这是活宝啊。

——————————————

往期精彩:

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值