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


8

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

Answers:


15

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

虽然标准SQL的核心和基本方面将在任何地方为您提供帮助,但我建议您不要尝试将自己限制在那种语言范围内,以免将来移植(或原则上)。就个人而言,我会尽量使用ANSI标准的东西(例如<> vs。!=,COALESCE vs. ISNULL,CURRENT_TIMESTAMP vs. GETDATE()等),但是我也不害怕使用特定于SQL Server的东西使我的工作更轻松的东西。

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

举例来说,SQL Server涵盖了该标准的大部分内容,并且与每个新版本都完全兼容。它会覆盖100%吗?高度怀疑。它将继续添加标准中未包含的专有扩展吗?当然。如果每个人都遵守该标准并且没有人走出它,那么选择一个平台而不是另一个平台将没有任何优势,而我们所有人都将使用相同的东西。


1
+1提及不到100%的遵从不一定是一件坏事。虽然将代码移植到各种平台上的能力看起来不错,但事实是您选择RDBMS的原因是有原因的(或者至少我希望选择的范围不仅仅是随意的)。在现实世界中,将代码移植到新平台上的成本通常比弄清楚如何在当前平台上执行代码的成本更高。
Matt M

11

没有一个。您可以为任何RDBMS学习标准(-ish)SQL。

现实世界中没有使用标准SQL来支付成功项目的工作...

话虽如此,MySQL是一个不错的起点,这里是一个教程


“在现实世界中,标准SQL并没有用于为成功的项目提供薪水……”-在所有堆栈交换中发布的最愚蠢的东西。
Jonesome恢复莫妮卡2014年

3
@samsmith为什么?仅仅因为您没有同意就不会变得愚蠢。也许您可以解释为什么您不同意,而不是仅仅说傻话?
亚伦·伯特兰

1
@samsmith也是,特别是如果您是不赞成投票的人,那么我发现您先前的呼吁是constructive guidance不可思议的伪善。您在哪里为gbn改善他的答案提供建设性指导?
亚伦·伯特兰

3
@samsmith如果您的目标是“成功的项目”,那么您需要利用所有RDBMS功能。不这样做,仅使用标准SQL就是在浪费您的软件功能
Lamak 2014年

1
@samsmith您从哪里获得“大%”的统计信息?而且,开发人员正在设计实际数据库系统中的百分之几?以我的个人经验以及我曾经与客户进行的所有接触,我还没有遇到符合该标准的SQL Server商店。曾经 不管您的开发者朋友声称自己在做什么,这样做都是很困难的。
亚伦·伯特兰

10

所有主要的RDBMS都不同程度地支持SQL规范的不同版本,并且更全面地支持该规范的旧版本。并非所有人都同样重视一致性(例如,Oracle在2001年,即SQL-92之后近十年的时间里开始支持“ ansi joins” ),正如@gbn已经说过的,实际上,您需要了解每种产品使用的SQL风格。你用。

Postgres是一个例外,因为它“以符合标准为己任”。对于“学习和参考目的”,您需要动手实践使用数据库,而不仅仅是一本书或标准中的知识,而Postgres是学习绳索的理想平台,因为:

  1. 它是免费的,可在大多数平台上使用
  2. 符合上述标准
  3. 它具有出色的文档
  4. 它已经成熟并且被广泛使用
  5. 它具有最流行的商业RDBMS中发现的许多功能,而许多功能不是

3

同意Jack和gbn,没有标准,您需要做出选择。要进行此选择,您需要首先选择RDBMS。我建议考虑以下事项:1)您想成为DB开发人员还是DBA?2)您要使用哪个操作系统?我同意,这个问题有点奇怪,但是当我与学生交谈时,他们说这很重要。

例如(仅举一个例子,也许我错了),如果您想成为一名DBA并且不想与Windows一起工作,则无需考虑MSSQL。如果您想成为DBA并且喜欢使用命令字符串和配置文件-也许Oracle是您所需要的。如果您想成为开发人员并想在自由项目中使用您的知识,也许您需要MySQL?


2
我希望这些不是初创企业选择平台的唯一标准。:-)
亚伦·伯特兰
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.