想精通SQL Server, T-SQL的全历史你听过吗?
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的全历史你听过吗?相关推荐
- SQL Server经典sql语句大全
SQL Server经典sql语句大全 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3. ...
- SQL SERVER 的SQL语句优化方式小结
SQL SERVER 的SQL语句优化方式小结 详细出处参考:http://www.jb51.net/article/19547.htm 1.SQL SERVER 2005的性能工具中有SQL Ser ...
- html连接数据库id号自动生成器,SQL Server数据库sql语句生成器(SqlDataToScript)的使用(sql server自增列(id)插入固定值)...
SqlDataToScript是根据表数据进行生成 Insert Into语句,此工具还有一个好处是可以对自增列插入固定值,例如:自增的列id值为5,但是5这个行值已经删除,如果想存储Id自增列值为5 ...
- 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 ...
- 从网卡中截获sql server的sql语句
@[TOC]从网卡中截获sql server的sql语句 从网卡中截获sql server的sql语句 前两年写过一个从网卡上直接截获sql server的插入和查询语句的小东西,今天想起来,放着也没 ...
- SQL Server中SQL是什么?
含义和定义 (Meaning and definition) SQL stands for Structured Query Language, a language for manipulating ...
- 整理:sql server 中sql语句执行顺序
原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...
- SQL Server 中SQL语句执行顺序
SQL Server 中SQL语句执行顺序 我们需要对SQL语句的执行顺序了若指掌,才能更好的理解SQL. SQL 不同于与其他编程语言的最明显特征是处理代码的顺序. 在大数编程语言中,代码按编码顺序 ...
- sql server xp_readerrorlog SQL语句查看错误日志
sql server xp_readerrorlog SQL语句查看错误日志 xp_readerrorlog 一共有7个参数: 存档编号 日志类型(1为SQL Server日志,2为SQL Agent ...
- 优化的ms sql server分页sql语句
优化的ms sql server分页sql语句 发布时间: 2009-8-15 00:00 | 发布作者: hjh | | 查看: 3次 特点:一次查询,数据库Databnse只返回一页的数据 ...
最新文章
- 媒体转码升级为媒体处理
- 科大讯飞语音合成api
- RocketMQ实战与原理---安装、部署及简单应用
- 谈谈C#的私有成员的一个有趣的现象!
- 深度学习(4) - 神经网络和反向传播算法
- 数据结构专题(二):2.5在链表指定位置插入元素
- Python对象的比较、拷贝
- Mac 安装Pytorch, Jupyter notebook, conda, python3
- HTML 禁用Select下拉框的上下左右键盘按键默认事件
- python对图片进行裁剪_python利用四个坐标点对图片进行裁剪
- Excel如何批量删除工作表中的所有空列
- 影响我一生的两本书(02)_huadingjin_新浪博客
- ubuntu19.04下VirtualBox与虚拟机win7共享文件夹
- “感动中国”2012年度人物颁奖词
- 微信小程序 - 无法获取云端数据库中的数据的问题(修改云端数据库权限)
- STM32单片机的启动模式 三种BOOT模式介绍
- Unity3D音频的制作
- 嵌入式工程师月薪最高排行榜
- 张五常先生谈读书和思考的方法
- Java性能优化推荐书!java原生开发是什么意思
热门文章
- linux mutt接收邮件,Linux下安装使用Mutt邮件客户端并配置邮件警报功能
- 搭建:直播软件环境搭建(FFmpeg+nginx+rtmp+vlc)
- java输入一个年龄_输入一个年龄,判断年龄范围
- Planar Graph
- 故障分析 | 血的教训-由慢查询引发的备份等待导致数据库连接打满
- 七夕节不知道送女朋友什么礼物?赶紧码住这篇送礼指南
- 【转载】Linux/Unix笔记本
- wx小程序bindtap与catchtap的区别
- Symbol MC 3000 掌上手写数据采集终端
- 支付宝二面:使用 try-catch 捕获异常会影响性能吗?90%都会答错