SQL,PL-SQL和T-SQL有什么区别?


360

SQL,PL-SQL和T-SQL有什么区别?

谁能解释这三者之间的区别,并提供相应使用的方案?


1
Microsoft SQL Server使用的查询语言是ANSI标准结构化查询语言SQL的变体。SQL Server变体称为Transact-SQL。

SQL是一种面向数据的语言,用于选择和操作数据集。PL / SQL是一种用于创建应用程序的过程语言

SQL是结构化的查询语言PL / SQL是一种扩展到sql的过程语言,它是由oracle开发的T-SQL是由Microsoft开发的

Answers:


379
  • SQL 是一种对集合进行操作的查询语言。

    它或多或少是标准化的,并且几乎被所有关系数据库管理系统使用:SQL Server,Oracle,MySQL,PostgreSQL,DB2,Informix等。

  • PL/SQL 是Oracle使用的专有过程语言

  • PL/pgSQL 是PostgreSQL使用的一种过程语言

  • TSQL 是Microsoft在SQL Server中使用的专有过程语言。

程序语言旨在扩展SQL的功能,同时能够与SQL很好地集成。添加了一些功能,例如局部变量和字符串/数据处理。这些功能使图灵语言变得完整。

它们还用于编写存储过程:驻留在服务器上的代码段,用于管理复杂的业务规则,而这些业务规则很难或根本无法通过基于纯集合的操作来管理。


14
Sybase也使用TSQL。至少在Oracle中,PL / SQL过程可以做的不仅仅是管理“业务规则”。PL / SQL程序可以访问网站,发送电子邮件等
埃里希Kitzmueller

3
PL / SQL并不仅仅存在于数据库中,例如Oracle Forms包含PL / SQL的客户端实现。
Erich Kitzmueller 09年

2
请注意,每个数据库都有其自己的SQL实现(T-SQL和PL / SQL是更常见的两个),当使用多个后端时,经常使用ANSI I标准SQL,但并非所有数据库也都使用所有ANSI I SQL功能。而且SQl的特定于数据库的实现往往是对该数据库表现最佳的实现-毕竟,它们必须给您使用数据库的理由,对吗?
HLGEM,2009年

2
更正:SQL是一种可在表本身上运行的语言,SQL本身为其提供了定义。SQL标准避免使用单词“集合”和“关系”及其派生词。未设置SQL表。
2011年

1
拥有可以在oracle和sql服务器上运行的sql程序语言肯定会很好。
RayLoveless 2013年

113

的SQL

SQL用于与数据库进行通信,它是关系数据库管理系统的标准语言。

详细地说,结构化查询语言是一种专用的编程语言,旨在管理关系数据库管理系统(RDBMS)中保存的数据,或关系数据流管理系统(RDSMS)中的流处理。

SQL最初基于关系代数和元组关系演算,由数据定义语言和数据操作语言组成。SQL的范围包括数据插入,查询,更新和删除,架构创建和修改以及数据访问控制。尽管SQL通常被描述为声明性语言(4GL),并且在很大程度上被描述为声明性语言(4GL),但它也包含过程元素。

PL / SQL

PL / SQL是SQL与编程语言的过程功能的组合。它是由Oracle Corporation开发的

PL / SQL的特长

  • 完全可移植的高性能交易处理语言。
  • 提供了内置的,与OS无关的解释程序环境。
  • 直接从命令行SQL * Plus界面调用。
  • 也可以从外部编程语言调用直接调用数据库。
  • 通用语法基于ADA和Pascal编程语言。
  • 除了Oracle,它还可以在TimesTen内存数据库和IBM DB2中使用。

T-SQL

Transaction-SQL的缩写,是SQL的扩展形式,它向SQL添加声明的变量,事务控制,错误和异常处理以及行处理。

结构化查询语言或SQL是一种专注于管理关系数据库的编程语言。SQL有其自身的局限性,这促使软件巨头Microsoft在SQL之上构建具有自己的扩展的扩展程序,以增强SQL的功能。微软在SQL中添加了代码,并将其称为Transact-SQL或T-SQL。请记住,T-SQL是专有的,处于Microsoft的控制之下,而SQL尽管是由IBM开发的,但已经是一种开放格式。

T-SQL添加了SQL中不可用的许多功能。

这包括过程编程元素和局部变量,以提供对应用程序流方式的更灵活控制。T-SQL还添加了许多功能,以使其功能更强大。用于数学运算,字符串运算,日期和时间处理等的函数。这些增加使T-SQL符合Turing完整性测试,该测试确定了计算语言的通用性。SQL的图灵不完整,并且在功能上受到很大限制。

T-SQL和SQL之间的另一个重要区别是对SQL中已经可用的DELETE和UPDATE命令所做的更改。对于T-SQL,DELETE和UPDATE命令都允许包含FROM子句,该子句允许使用JOIN。这简化了对记录的过滤,以轻松挑选出符合特定条件的条目,而SQL可能会更复杂一些。

在T-SQL和SQL之间进行选择完全取决于用户。不过,在处理Microsoft SQL Server安装时,使用T-SQL仍然更好。这是因为T-SQL也来自Microsoft,并且将两者一起使用可最大程度地提高兼容性。有多个后端的人首选SQL。

参考书目 ,维基百科,教程要点:www.differencebetween.com


4
目前是最佳答案的IMO(但是,manoj的答案和博客文章也值得一读)。
salcoin

1
不是从Sybase那里购买了T-SQL以及他们购买的第一个SQL Server版本的数据库代码吗?至少T-SQL也可以在Sybase上运行,所以我认为有一些“通用代码”
phil_w 18-10-17

实际上,Microsoft和Sybase共同开发了用于OS2的SQL Server。因此,两家公司共同开发了T-SQL。这就是为什么两个数据库都可以使用T-SQL的原因,尽管T-SQL的两个变体之间存在显着差异。
阿兰妮娜

44
  • SQL与数据库对话的语言。它使您可以选择数据,变异和创建数据库对象(如表,视图等),更改数据库设置。
  • PL-SQL 一种过程编程语言(带有嵌入式SQL)
  • T-SQL SQL Server使用的(过程性)SQL扩展

应该是SPL(存储过程语言),PL太笼统(即C)。
samis

32

1. SQL或结构化查询语言是IBM为其产品“ System R”开发的。

后来,ANSI将其作为所有查询语言所基于的标准,并将其扩展为创建自己的数据库查询语言套件。第一个标准是SQL-86,最新标准是SQL:2011

2. T-SQL或Transact-SQL由Sybase开发,后来由Microsoft SQL Server 共同拥有。

3. PL / SQL或过程语言/ SQL是Oracle Database,当时被称为“关系软件”。

我已经在我的博客文章中对此进行了记录。


2
这个答案比已批准的答案更彻底,并且博客文章很不错。
salcoin

7

结构化查询语言-SQL:是全世界几乎所有SGBD供应商所使用的ANSI标准。基本上,SQL是用于定义和操作数据的语言[DDL和DML]。

PL / SQL是Oracle Universe创建的一种语言。PL / SQL结合了编程过程指令,并允许创建直接在数据库方案上运行的程序。

T-SQL是Microsoft产品的对齐SQL模式,具有某些特性。因此,请随时测试您的限制。


1

SQL是一种标准,并且有许多数据库供应商(例如Microsoft,Oracle)使用自己的专有语言来实现此标准。

Microsoft使用T-SQL来实现SQL标准以与数据进行交互,而oracle使用PL / SQL。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.