Microsoft将自己的SQL扩展作为Transact SQL(T-SQL)实现的原因是什么?它比普通的SQL有什么优势?为什么微软创建自己的SQL扩展(T-SQL)?
回答
每个人都扩展SQL。
SQL不是程序性的,它是声明性的。你描述你想要的东西,并且找出如何使用任何索引或哈希或者什么都不可用来检索它。
但有时候,这还不够。 T-SQL提供了在你的查询中运行程序代码的语法。这使您可以控制结构(begin-end,if-then-else),在局部变量,临时表和其他源之间迭代和移动值。
Transact-SQL(T-SQL)是Microsoft和Sybase对SQL的专有扩展。微软的实施出现在Microsoft SQL Server产品中。 Sybase在其Adaptive Server Enterprise中使用该语言,这是Sybase SQL Server的后续产品。 的Transact-SQL增强SQL用这些附加特征:
- 控制-流语言
- 局部变量
- 各种支持功能
- 改进[需要引用]删除和更新陈述
http://en.wikipedia.org/wiki/Transact-SQL
维基您连接到更多的扩展信息和细节。
在这里要注意的是,虽然大多数RDBMS供应商使他们的扩展SQL和用来编写存储过程和触发器等编程语言之间有明显的区别,微软和Sybase做完全相反,它们混合这两种概念合为一体,即T-SQL。在编写普通查询时使用T-SQL,但在编写存储过程和触发器时,您也可以(并且通常会)使用T-SQL。
这有鼓励(或至少使得很容易)创建的程序和SQL代码[*]混合有争议的好处。
如今微软使T-SQL存储过程和那些为CLR(例如,.NET)编写的区别,但这是一个相对较新的发展(从SQL Server 2005起)。
[*]:有争议的,因为不说话SQL谁的人会禁不住想编写程序代码(通常是非常数据库中低效的),而不是学习SQL(正确的事)。
什么是落后于微软实现了自己的
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
之外几乎每个任务都需要一些专有支持才能有效实施。
另外一个为什么厂商建立自己的SQL的口味很重要的原因是性能调整。有很多方法可以使用供应商特定的代码编写更多的性能查询,这些代码是为了利用特定数据库引擎的工作方式而编写的。
适用于流程控制,本地变量等(即过程代码)的SQL标准被称为SQL/PSM(持久存储模块)。
根据Wikipedia它于1996年通过,但我怀疑这是通常的问题:厂商已经致力于自己的扩展,因此占用标准被推迟的时间
长时间......但不一定是无限期的,有希望。例如,SQL Server 2005中的公用表表达式(CTE)和OLAP函数以及SQL Server 2008中的时态数据类型表明TSQL的扩展将接近发布标准。
- 1. 创建自己的文件扩展名
- 2. 为什么扩展你自己的协议?
- 3. 利用现有的org.eclipse.ui.menus扩展创建自己的工具栏
- 4. TYPO3 - realurl忽略创建/自己的扩展
- 5. 如何创建自己的域名扩展?
- 6. 根据plist创建我自己的文件扩展名
- 7. android如何创建我自己的Activity并将其扩展?
- 8. 如何创建自己的扩展用户表单?
- 9. 微软sql server:检查用户自己的权限
- 10. 为什么我无法为静态类创建扩展方法?
- 11. 为什么微软的_wspawnv返回EINVAL?
- 12. 为Internet Explorer创建扩展的最佳方式是什么?
- 13. 为什么无法创建扩展OnTouchListener的类
- 14. 为什么不在HTML5中创建自己的语义元素?
- 15. 为什么要创建自己的Haar分类器级联?
- 16. 什么时候创建自己的DLL应该在什么
- 17. 为什么自己创建SQLite数据库rowid? Android
- 18. 微软AZURE SQL
- 19. SQL /微软Access
- 20. TYPO3 Extbase扩展现有的扩展使用自己的扩展模型?
- 21. 为什么微软选择MVC构建ASP.net MVC?
- 22. 微软TSQL改变文本行
- 23. Qt扩展我自己的小部件
- 24. typo3 7,bootstrap_package,RealUrl和自己的扩展
- 25. 自己的扩展性层或MEF/MAF?
- 26. 用我自己的方法扩展Protobuf
- 27. 创建Spree扩展
- 28. 创建IE扩展
- 29. 创建通用扩展方法时,我们正在扩展什么?
- 30. 如何创建自动扩展块
几乎所有DB厂商都有自己的执行SQL的&我想,大多数人都支持标准的SQL。如果有人回答你的问题,它对你有什么帮助? – shahkalpesh 2009-07-14 06:43:04