Microsoft将自己的SQL扩展实现为Transact SQL(T-SQL)的原因是什么?它比普通的SQL有什么优势?
答案 0 :(得分:5)
每个人都扩展SQL。
SQL不是程序性的,它是声明式的。你描述了你想要的东西,它会弄清楚如何使用任何索引或哈希或者可用的东西来检索它。
但有时,这还不够。 T-SQL提供了在查询中运行过程代码的语法。这使您可以控制结构(begin-end,if-then-else),迭代并在局部变量,临时表和其他源之间移动值。
答案 1 :(得分:4)
Transact-SQL(T-SQL)是Microsoft和Sybase的SQL专有扩展。 Microsoft的实现附带在Microsoft SQL Server产品中。 Sybase在其Adaptive Server Enterprise中使用该语言,后者是Sybase SQL Server的后续版本。 Transact-SQL使用以下附加功能增强了SQL:
http://en.wikipedia.org/wiki/Transact-SQL
Wiki将您连接到更多不断扩展的信息和细节。
答案 2 :(得分:4)
Microsoft将自己的
SQL
扩展名实施为Transact SQL
(T-SQL
)背后的原因是什么?
让您的生活更轻松。
与普通
SQL
相比,它有什么优势?
没有“普通SQL
”
Transact-SQL
两者都增强了SQL
的基于集合的能力,并增加了程序能力。
其他系统(如Oracle
和PostgreSQL
)明确区分SQL
和过程语言(PL/SQL
和pl/PgSQL
)。
微软没有做出如此严格的区分。
Transact-SQL
由Sybase
围绕80's
中间开发,当时根本没有标准(第一个是在1986
中提出的)。
到那时,每个供应商都有遗留应用程序的负担来支持,并且重写他们的数据库以符合标准会破坏兼容性。
或多或少得到普遍支持的标准SQL:92
,但它仍然非常缺乏真正有用的标准。
这就是为什么几乎所有超出简单SELECT
且JOIN
的任务都需要一些专有支持才能有效实施。
答案 3 :(得分:2)
值得注意的是,虽然大多数RDBMS提供程序明确区分了它们对SQL的扩展和用于编写存储过程和触发器的编程语言等,但Microsoft和Sybase完全相反,它们将这两个概念混合在一起合二为一,即T-SQL。在编写普通查询时使用T-SQL,但在编写存储过程和触发器时也可以(通常也可以)使用T-SQL。
这有一个有争议的好处,鼓励(或至少很容易)创建程序和SQL代码的混合[*]。
如今微软区分了T-SQL存储过程和为CLR(即.NET)编写的过程,但这是一个相对较新的开发(从SQL Server 2005开始)。
[*]:有争议,因为不会说SQL的人会想要编写程序代码(通常在数据库中效率很低)而不是学习SQL(正确的事情)。
答案 4 :(得分:1)
适用于控制流,局部变量等的SQL标准(即程序代码)称为SQL / PSM(持久存储模块)。
根据Wikipedia,它于1996年通过,但我怀疑这是通常的问题:供应商已经承诺了他们自己的扩展,因此标准被推迟了很长一段时间
......但不一定无限期,有希望。例如,SQL Server 2005中的公用表表达式(CTE)和OLAP函数以及SQL Server 2008中的时态数据类型表明TSQL的扩展将保持接近发布标准。
答案 5 :(得分:0)
供应商创建自己的SQL风格的另一个非常重要的原因是性能调优。使用特定于供应商的代码编写更多高性能查询有很多方法,这些代码是为了利用特定数据库引擎的工作方式而编写的。