哪种 SQL 标准得到最广泛和完全的支持?

mum*_*taz 8 sql-standard

我想专注于 SQL 语言规范之一,以供学习和参考。哪个版本的 SQL 标准在 DBMS 中得到最广泛的支持,以便我可以将时间和精力集中在它上面?

Aar*_*and 15

我认为您正试图生活在 Joe Celko 的梦想世界中,在那里您只能使用标准 SQL,并且在任何给定的一周内,您可能必须将所有代码从 SQL Server 移植到 Oracle,然后将 Oracle 移植到 DB2,然后再次返回 SQL Server . 两次。

虽然标准 SQL 的核心和基本方面将在任何地方为您提供帮助,但我不建议将自己限制在这组语言中以免将来移植(或只是原则上)。就我个人而言,我尽可能坚持使用 ANSI 标准(例如 <> 与 !=、COALESCE 与 ISNULL、CURRENT_TIMESTAMP 与 GETDATE() 等),但我也不害怕使用 SQL Server 特定的使我的工作更轻松的东西。

了解 SQL 一般是如何工作的很重要;了解该语言在您的RDBMS 中的工作方式同样重要——包括与标准的偏差、与另一个 RDBMS 可能实现相同概念的方式的偏差以及其他地方不存在的专有扩展。

例如,SQL Server 涵盖了标准的很大一部分,并且更接近于完全符合每个新版本。它会覆盖100%吗?高度怀疑。它会继续添加标准中没有的专有扩展吗?当然。如果每个人都遵守标准并且没有人超出标准,那么选择一个平台而不是另一个平台就没有任何优势,我们都会使用相同的东西。


gbn*_*gbn 11

他们都没有。您可以学习任何 RDBMS 的标准 (-ish) SQL。

标准 SQL 在现实世界中并不用于支付成功项目的工作......

也就是说,MySQL 是一个很好的起点,这里有一个教程

  • @samsmith 为什么?仅仅因为你碰巧不同意并不让它变得愚蠢。也许你可以解释为什么你不同意,而不是简单地称之为愚蠢? (3认同)
  • @samsmith 如果您的目标是“成功的项目”,那么您**需要**利用您的所有 RDBMS 功能。否则,仅使用标准 SQL 只会浪费您的软件功能 (3认同)

Jac*_*las 10

所有主要的 RDBMS 都在不同程度上支持不同版本的 SQL 规范,更全面地支持旧版本的规范。并非所有人都同样重视一致性(例如,Oracle 于 2001 年开始支持“ansi joins”,比SQL-92晚了近十年),正如@gbn 已经说过的那样,在实践中你需要知道每个产品使用的 SQL 的风格你用。

Postgres 是个例外,因为它“以符合标准而自豪”。出于“学习和参考目的”,您需要对数据库进行动手练习,而不仅仅是书本或标准中的知识,而 postgres 是学习绳索的理想平台,因为:

  1. 它是免费的,可在大多数平台上使用
  2. 上述标准合规性
  3. 它有很好的文档
  4. 成熟,应用广泛
  5. 它具有在最流行的商业 RDBMS 中可以找到的许多功能,还有很多没有