ChatGPT解决这个技术问题 Extra ChatGPT

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

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

谁能解释这三者之间的区别是什么,并提供每个相关使用的场景?

Microsoft SQL Server 使用的查询语言是 ANSI 标准结构化查询语言 SQL 的变体。 SQL Server 变体称为 Transact-SQL。
SQL 是一种面向数据的语言,用于选择和操作数据集。 PL/SQL 是一种用于创建应用程序的过程语言
SQL 是结构化查询语言 PL/SQL 是扩展为 sql 的过程语言 它是由 oracle 开发的 T-SQL 是由 microsoft 开发的

Q
Quassnoi

SQL 是一种对集合进行操作的查询语言。它或多或少是标准化的,几乎被所有关系数据库管理系统使用:SQL Server、Oracle、MySQL、PostgreSQL、DB2、Informix 等。

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

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

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

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

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


Sybase 也使用 TSQL;至少在 Oracle 中,PL/SQL 程序可以做的不仅仅是管理“业务规则”; PL/SQL 程序可以访问网站、发送电子邮件等。
PL/SQL 不仅仅存在于数据库中,例如 Oracle Forms 包含 PL/SQL 的客户端实现。
请注意,每个数据库都有自己的 SQL 实现(T-SQL 和 PL/SQL 是更常见的两种),当使用多个后端时通常使用 ANSII 标准 SQL,但并非所有数据库都使用所有 ANSII SQL 功能。 SQl 的数据库特定实现往往是对该数据库表现最佳的实现——毕竟他们必须给你一个使用他们数据库的理由,对吗?
更正:SQL 是一种对 SQL 本身提供定义的表进行操作的语言。 SQL 标准避免使用“集合”和“关系”及其派生词。 SQL 表不是集合。
拥有一种可以跨 oracle 和 sql server 工作的 sql 过程语言肯定会很好。
L
Legends

SQL

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

具体来说,结构化查询语言是一种专用编程语言,设计用于管理关系数据库管理系统 (RDBMS) 中保存的数据,或用于关系数据流管理系统 (RDSMS) 中的流处理。

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

PL/SQL

PL/SQL 是 SQL 与编程语言的过程特性的组合。它由甲骨文公司开发

PL/SQL 专业

完全可移植的高性能事务处理语言。

提供了一个内置的解释和操作系统独立的编程环境。

直接从命令行 SQL*Plus 界面调用。

也可以从外部编程语言调用对数据库进行直接调用。

通用语法基于 ADA 和 Pascal 编程语言的语法。

除了 Oracle,它还可以在 TimesTen 内存数据库和 IBM DB2 中使用。

T-SQL

Transaction-SQL 的缩写,是 SQL 的一种扩展形式,可将声明的变量、事务控制、错误和异常处理以及行处理添加到 SQL

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

T-SQL 添加了许多 SQL 中没有的功能。

这包括过程编程元素和局部变量,以提供对应用程序流动方式的更灵活控制。 T-SQL 还添加了许多功能,使其更强大;用于数学运算、字符串运算、日期和时间处理等的函数。这些添加使 T-SQL 符合图灵完整性测试,该测试确定计算语言的普遍性。 SQL 不是图灵完备的,它可以做的范围非常有限。

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

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

参考资料,维基百科,教程点:www.differencebetween.com


IMO 目前是最好的答案(但是,manoj 的答案和博客文章也值得一读)。
T-SQL 不是从 Sybase 购买的,以及他们购买的用于制作第一个 SQL 服务器版本的数据库代码吗?至少 T-SQL 也适用于 Sybase,所以我认为有一些“通用代码”
实际上,Microsoft 和 Sybase 共同开发了用于 OS2 的 SQL Server。因此,两家公司共同致力于开发 T-SQL。这就是为什么两个数据库都可以使用 T-SQL 的原因,尽管 T-SQL 的两个变体之间存在显着差异。
将 PL/SQL 称为“SQL 与编程语言的过程特性的组合”可能会给人一种印象,即它是 SQL 的一种扩展方言,而实际上它是一种在数据库中编译的、本机嵌入 SQL 的编程语言。技术论坛上的常见问题是当人们说他们有一个 PL/SQL 问题时,实际上他们有一个 Oracle SQL 问题。
Y
Yogesh Sharma

SQL 一种用于与数据库对话的语言。它允许您选择数据、变异和创建数据库对象(如表、视图等)、更改数据库设置。

PL-SQL 一种过程编程语言(带有嵌入式 SQL)

SQL Server 使用的 SQL 的 T-SQL(过程)扩展


应该是SPL(Stored Procedure Lang),PL太笼统了(即C)。
a
a_horse_with_no_name

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

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

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

3. PL/SQL或Procedural Language/SQL是Oracle数据库,当时被称为“关系软件”。

我已在我的 blog post 中记录了这一点。


这个答案比批准的答案更彻底,博客文章很值得一读。
B
Bhavesh Odedra

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

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

T-SQL 是 Microsoft 产品对齐的 SQL 模式,具有一些特殊性。因此,请随意测试您的极限。


V
Viku

SQL 是一个标准,有许多数据库供应商,如 Microsoft、Oracle 使用他们自己的专有语言来实现这个标准。

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