01,    SQL 的渊源

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

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

上帝语言是这样的:

而凡人的工具长这样:

没错,这就是SQL.

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

深扒SQL的历史,说点秘密给你听

SQL 已死,NoSQL才是王道?醒醒吧,别瞎说八道了

这位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,你发我的新语法,管用,省事儿!” 这一切,都是值得的。

想精通SQL Server, T-SQL的全历史你听过吗?相关推荐

  1. SQL Server经典sql语句大全

    SQL Server经典sql语句大全 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3. ...

  2. SQL SERVER 的SQL语句优化方式小结

    SQL SERVER 的SQL语句优化方式小结 详细出处参考:http://www.jb51.net/article/19547.htm 1.SQL SERVER 2005的性能工具中有SQL Ser ...

  3. html连接数据库id号自动生成器,SQL Server数据库sql语句生成器(SqlDataToScript)的使用(sql server自增列(id)插入固定值)...

    SqlDataToScript是根据表数据进行生成 Insert Into语句,此工具还有一个好处是可以对自增列插入固定值,例如:自增的列id值为5,但是5这个行值已经删除,如果想存储Id自增列值为5 ...

  4. aws rds监控慢sql_探索AWS RDS SQL Server上SQL Server集成服务(SSIS)

    aws rds监控慢sql In the previous article, Deploy tabular databases in SSAS on AWS RDS SQL Server, we ex ...

  5. 从网卡中截获sql server的sql语句

    @[TOC]从网卡中截获sql server的sql语句 从网卡中截获sql server的sql语句 前两年写过一个从网卡上直接截获sql server的插入和查询语句的小东西,今天想起来,放着也没 ...

  6. SQL Server中SQL是什么?

    含义和定义 (Meaning and definition) SQL stands for Structured Query Language, a language for manipulating ...

  7. 整理:sql server 中sql语句执行顺序

    原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...

  8. SQL Server 中SQL语句执行顺序

    SQL Server 中SQL语句执行顺序 我们需要对SQL语句的执行顺序了若指掌,才能更好的理解SQL. SQL 不同于与其他编程语言的最明显特征是处理代码的顺序. 在大数编程语言中,代码按编码顺序 ...

  9. sql server xp_readerrorlog SQL语句查看错误日志

    sql server xp_readerrorlog SQL语句查看错误日志 xp_readerrorlog 一共有7个参数: 存档编号 日志类型(1为SQL Server日志,2为SQL Agent ...

  10. 优化的ms sql server分页sql语句

    优化的ms sql server分页sql语句 发布时间: 2009-8-15 00:00 |  发布作者: hjh |   |  查看: 3次 特点:一次查询,数据库Databnse只返回一页的数据 ...

最新文章

  1. 媒体转码升级为媒体处理
  2. 科大讯飞语音合成api
  3. RocketMQ实战与原理---安装、部署及简单应用
  4. 谈谈C#的私有成员的一个有趣的现象!
  5. 深度学习(4) - 神经网络和反向传播算法
  6. 数据结构专题(二):2.5在链表指定位置插入元素
  7. Python对象的比较、拷贝
  8. Mac 安装Pytorch, Jupyter notebook, conda, python3
  9. HTML 禁用Select下拉框的上下左右键盘按键默认事件
  10. python对图片进行裁剪_python利用四个坐标点对图片进行裁剪
  11. Excel如何批量删除工作表中的所有空列
  12. 影响我一生的两本书(02)_huadingjin_新浪博客
  13. ubuntu19.04下VirtualBox与虚拟机win7共享文件夹
  14. “感动中国”2012年度人物颁奖词
  15. 微信小程序 - 无法获取云端数据库中的数据的问题(修改云端数据库权限)
  16. STM32单片机的启动模式 三种BOOT模式介绍
  17. Unity3D音频的制作
  18. 嵌入式工程师月薪最高排行榜
  19. 张五常先生谈读书和思考的方法
  20. Java性能优化推荐书!java原生开发是什么意思

热门文章

  1. linux mutt接收邮件,Linux下安装使用Mutt邮件客户端并配置邮件警报功能
  2. 搭建:直播软件环境搭建(FFmpeg+nginx+rtmp+vlc)
  3. java输入一个年龄_输入一个年龄,判断年龄范围
  4. Planar Graph
  5. 故障分析 | 血的教训-由慢查询引发的备份等待导致数据库连接打满
  6. 七夕节不知道送女朋友什么礼物?赶紧码住这篇送礼指南
  7. 【转载】Linux/Unix笔记本
  8. wx小程序bindtap与catchtap的区别
  9. Symbol MC 3000 掌上手写数据采集终端
  10. 支付宝二面:使用 try-catch 捕获异常会影响性能吗?90%都会答错