VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > SQL教程 >
  • 想精通SQL Server, T-SQL的全历史你听过吗?

01, SQL 的渊源

人类开始思考,上帝开始发笑。

早在20世纪70年代,两位年轻人Ray Boyce 和 Donald D. Chamberlin,成功将上帝语言(关系数学)编译为凡人的工具。

上帝语言是这样的:

而凡人的工具长这样:

没错,这就是SQL.

更多的历史,可以参考我的两篇原创文章:

深扒SQL的历史,说点秘密给你听mp.weixin.qq.com图标

 

SQL 已死,NoSQL才是王道?醒醒吧,别瞎说八道了mp.weixin.qq.com图标

 

这位70后语言大叔,历经40余载的风风雨雨,送走古往今来多少挑战者,其中不乏几乎颠覆整个数据库界的 NoSQL 王者,比如 MongoDB, ElasticSearch, HBase, Hive, 但迄今依然是首座,亦有大幅收复丢失战地的气魄。

02, ISO 与 ANSI

俗话说,没有标准,就没有方圆。

在 SQL 行业,有两个标准,作为基本常识,不可不知,那就是 ISO 与 ANSI.

ISO: International Organization for Standardization. 我们常称之为国际标准组织。

 

这家总部设在瑞士日内瓦的组织,就干了一件事:把164个国家的标准采纳到自己的标准清单上,坐收全世界的认证费,是不是够牛皮?所以说,人生只要干好一件事就足矣!

那么全世界的企业都傻了么,为什么要费钱拿个 ISO 认证?其实这是一套玩法,在这个圈子里玩,就要遵守规矩,尤其是信任规矩。如果没有坐下来好好谈,把规矩形成大家的共识,那么背叛和出卖也就难免了。

就拿5G来说,如果没有个标准通信信道,华为的5G跑到人家欧洲市场,就不灵了。因为华为的5G通信信道标准是 Polar, 但欧洲人采用的是 Colar, 那妥妥的欧洲人的钱就挣不到了嘛。

回到 SQL 上来,大家都知道关系代数和关系计算是 SQL 的基础,那如果不用 SELECT 标明是选择, 用 INSERT 标明是插入,那么可以想象,几个地区的查询语句就好玩了:

Retrieve * At TblUsers;
Grab * In TblUsers;

其实大家都说的是同一个事儿:

Select * From TblUsers;

所以还是得感谢 ISO 组织,要不然我们得学多少门 SQL 方言。

作为一家盈利公司,只要你能符合 ISO SQL 的标准,无论你的数据库底层怎么实现,用什么操作系统,用什么编程语言,只能 CRUD 都遵循了 ISO 标准,就可以推向全世界。

刚才提到,ISO 是国际标准组织,由164个国家的标准化组织联盟组成。其中就有 ANSI, 而 ANSI 就是首次提出 SQL 作为 ISO 标准的美国国家标准研究院(American National Standard Institute).

这步操作,全美国都要感谢 ANSI,如果不是 ANSI 这么及时的给 SQL 按上一个名分,三大数据库软件 Oracle, DB2, SQL Server 就只能在美国玩了。

ANSI 在 1986 年提出第一版 SQL 标准,简称 ANSI X3.135-1986 . 实际上, ANSI 与 ISO 一样是个组织,自己本身并不开发任何标准,都是由认证成员自己提出标准,组织批准和认证。本质上来说, ANSI X3.135-1986 并不是 ANSI 自己提出的,而是 ANSI 认证的组织,叫做 Accredited Standards Committee (ASC) X3,就是现在的 INCITS,向 ANSI 提交的。ANSI X3.135-1986 一炮而红之后, ISO 在 1987 年也就提出了 ISO 9075-1987 标准。从此 SQL 标准登录了世界舞台。

如果说 ANSI X3.135-1986 催生了 ISO 9075-1987 ,那么之后 ANSI 就顺延了 ISO 的各种标准,ISO 有啥新标准,ANSI 就执行新标准。比如随后的 SQL 新版本有 SQL89, SQL 92, SQL93, SQL2003, SQL2008, SQL2011,SQL2013, SQL2016, ANSI 也跟上了这些标准。

看到上面的故事,是不是已经窒息了,这么枯燥,我都看不下去。让我举个更简单的例子:比如我们费尽要考取的清华大学。

考入清华,是每个人的理想。但现实是这只能成为大部分人的梦想。因为标准高啊。而一旦考入清华,再出来找工作,是不是简单很多?HR 一听清华出来的,眼睛都绿了。这就是清华认证的魅力。

当有一天,你经过千山万水的努力,让自己在德智体美劳全面开花了,终于进入清华了,发现这特么太简单了,我要加大难度,于是把分数线提高了30分。你看,这就是改标准。于是,又有学弟学妹千山万水的冲突了你的标准,进来了。这些学霸一看,这谁定的分数线,太简单,于是又拉高了30分。成了标准清华标准3.0. 如此循环,生生不息。

你看,这就是标准组织与成员之间的互相促进。强者恒强!

 

03, T-SQL 的过去

SQL 99 (included some OLAP concepts, Boolean data types, role-based access)
SQL 2003 (included some XML features, windows functions, more OLAP features, and other features)
SQL 2006 (includes more features related to Storing XML, XQuery, etc.)
SQL 2008 (includes definitions for TRUNCATE statements, FETCH Clauses, INSTEAD OF)
SQL 2011 (includes revisions for temporal data, some additional definitions for Windows Functions and also the FETCH clause
SQL 2016 includes features related to JSON data, polymorphic table functions, and row pattern matching
SQL 2019 is related to the multidimensional arrays

很多前端开发朋友都会问我,为什么 SQL Server 不支持 Json 啊,这么弱鸡。我也只能笑笑,其实 SQL 也是受版本控制的,如果你也受到类似问题的困惑,大概上面的清单就可以帮助你。

T-SQL, Transaction-SQL,最先用于 Sybase, 之后 Sybase 移交给了 MS SQL Server, 自然 T-SQL 也是 SQL Server 的专属语言了。

如果想要看 IBM 与 Microsoft 之间的恩怨,还有 Sybase 与 SQL Server 之间的蜜月,可以看这篇 《深扒SQL的历史,说点秘密给你听》,保证你大呼小叫。

在我看来,SQL Server 的更新版本是很快的,我从 SQL Server 2000开始用起来,慢慢熟悉了 T-SQL, Dts, Reporting. 当我主导完第一个 Cube 项目,收到集团公司的好评开始,我就断定了,SQL Server 完全具备提供全套信息服务工具的能力。当 SQL Server 2005 出来时,我毫不犹豫的就在公司的下一个 OLAP 中使用上了,SSIS/SSAS/SSRS 简直就是福星。

抛去这些数据库本身的特性带来的震撼之外,T-SQL本身也在紧跟 SQL 标准发展。当我开始在项目中使用,OffSET ... Rows Fetch Only...Rows, 身边的朋友们还在放肆的大笑,这么风骚的代码,也只有你黄师傅才敢写。分页不就是 RowNumber 嘛,搞那么复杂。

哈哈,ISO SQL2011 标准早就有了,现在才用,是这些人太不懂SQL!

如果你们跟上了SQL的步伐,果断采用新特性,我支持。并且有空就要给你们的朋友普及,虽然换来的可能是质疑的声音,但不用多久,你就会得到他们的正面反馈“我X,你发我的新语法,管用,省事儿!” 这一切,都是值得的。

 

相关教程