Answers:
我认为您正在尝试生活在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%吗?高度怀疑。它将继续添加标准中未包含的专有扩展吗?当然。如果每个人都遵守该标准并且没有人走出它,那么选择一个平台而不是另一个平台将没有任何优势,而我们所有人都将使用相同的东西。
constructive guidance
不可思议的伪善。您在哪里为gbn改善他的答案提供建设性指导?
所有主要的RDBMS都不同程度地支持SQL规范的不同版本,并且更全面地支持该规范的旧版本。并非所有人都同样重视一致性(例如,Oracle在2001年,即SQL-92之后近十年的时间里开始支持“ ansi joins” ),正如@gbn已经说过的,实际上,您需要了解每种产品使用的SQL风格。你用。
Postgres是一个例外,因为它“以符合标准为己任”。对于“学习和参考目的”,您需要动手实践使用数据库,而不仅仅是一本书或标准中的知识,而Postgres是学习绳索的理想平台,因为:
同意Jack和gbn,没有标准,您需要做出选择。要进行此选择,您需要首先选择RDBMS。我建议考虑以下事项:1)您想成为DB开发人员还是DBA?2)您要使用哪个操作系统?我同意,这个问题有点奇怪,但是当我与学生交谈时,他们说这很重要。
例如(仅举一个例子,也许我错了),如果您想成为一名DBA并且不想与Windows一起工作,则无需考虑MSSQL。如果您想成为DBA并且喜欢使用命令字符串和配置文件-也许Oracle是您所需要的。如果您想成为开发人员并想在自由项目中使用您的知识,也许您需要MySQL?