为什么没有数据库完全支持ANSI或ISO SQL标准?

如果要设计炼油厂,我不会指望来自不同供应商的材料不会以微妙而重要的方式符合已发布的标准。 一家供应商的管道,阀门和其他组件的法兰和壁厚均符合ANSI标准,其他任何一家供应商的零件也都具有。 因此,确保了互操作性和系统安全性。

那么,为什么通用数据库如此选择他们遵循的标准的哪些部分,又为什么没有100%符合标准的系统脱颖而出? 这些标准是“破损”的,缺乏范围的还是太难设计的?

得出结论;得出结论 ANSI(或ISO)定义SQL标准有什么意义?

编辑:常见数据库之间的实现差异列表

12个解决方案
17 votes

在软件行业中,您有一些确实是标准的标准,即不符合这些标准的产品就无法正常工作。 文件规范属于该类别。 但是,您还拥有了更像准则的“标准”:它们可以定义为具有逐点定义的标准,但通常仅部分实现或有很大差异。 Web开发中充满了诸如HTML,CSS和“ ECMAScript”之类的“标准”,其中不同的供应商(即Web浏览器)以不同的方式实施这些标准。

这种变化会引起头痛,但是标准化仍然可以带来好处。 想象一下,如果根本没有HTML标准,并且每个浏览器都使用自己的标记语言。 同样,假设没有SQL标准,并且每个数据库供应商都使用其自己完全专有的查询语言。 供应商的锁定将更多,而开发人员使用多个产品的工作将更加困难。

因此,不,ANSI SQL不能达到其他行业中ANSI标准所达到的目的。 但这确实有一个有用的目的。

John M Gant answered 2020-06-29T23:07:41Z
14 votes

可能是因为对数据库系统购买者而言,标准一致性的优先级较低。 他们更感兴趣:

  • 与他们已经拥有的兼容性
  • 性能
  • 价钱
  • 操作系统支持

仅列举几个因素。

编程语言也是如此-很少(如果有)编译器支持当前ANSI C和C ++标准的每个功能。

至于为什么要打扰标准,大多数供应商最终都会为标准带来支持。 例如,大多数供应商或多或少地支持全部SQL89。 这使供应商可以在规格表上打一个(相对不重要的)复选框,也可以让像我这样对编写可移植代码感兴趣的人这样做,尽管不得不放弃很多麻烦。

answered 2020-06-29T23:08:32Z
13 votes

请参阅文章“ SQL是否是真正的标准?” 有关当前(2005年)SQL标准问题的讨论。

oluies answered 2020-06-29T23:08:52Z
6 votes

确实,不经常遵循ANSI SQL标准。 只需阅读SO:大多数SQL线程都不会参考该标准,例如,有关网络协议的讨论通常包括相关RFC的实际引用,章节和经文。

我一直怀疑原因之一是SQL标准不能自由分发的事实。 仅仅获得它并不是微不足道的。 各种各样的非官方副本随处可见。)

另一个原因是它是一个非常复杂的文本,并且组织得很差。 它使用奇怪的词汇表(例如“ authID”而不是“ user”)。 您只需要阅读书籍即可理解标准(“ SQL标准指南”,C.J。Date,休·达文-Addison-Wesley)。

bortzmeyer answered 2020-06-29T23:09:21Z
5 votes

我不知道ANSI SQL的历史。 但是似乎在软件开发中很多时候,主要参与者已经实现了自己专有的事物版本之后才编写标准。 一旦公司以自己的方式进行投资,就很难证明改变或删除人们一直依赖于遵守标准的功能是合理的。 Web标准是这种现象的主要示例。

Ryan Bolger answered 2020-06-29T23:09:42Z
5 votes

Mimer SQL具有强大的标准支持,但鲜为人知。 它在几个大型工厂生产,大部分在瑞典。 但是我认为许多网站正在迁移到其他网站。

详细的支持声明:

  • SQL-99
  • SQL-2003
  • PSM
  • 根据SQL:1999的数据库触发器和函数
  • 根据SQL:1999支持二进制和字符大对象(BLOB / CLOB / NCLOB)
  • 符合Open Group XA标准的多数据库事务(两阶段提交)
  • 支持Java ME CDC Foundation Profile和Java ME CLDC / MIDP
oluies answered 2020-06-29T23:10:37Z
3 votes

几年前,就相互兼容的管道和连接器而言,最糟糕的行业之一是消防设备。 从字面上看,有数十种相互不兼容的软管与泵连接。 当互助在消防员中变得司空见惯时,他们不得不携带数十个适配器才能使设备互操作。

9月11日,警察和消防员都拥有专用无线网络,以实现人们之间的相互通信。 但猜猜怎么了? 这两个系统不相互兼容。 因此,从一种公共安全服务人员到另一种公共安全服务人员的信息交流没有不必要的延迟。

如果回溯得足够远,您会发现在纽约市有一段时间,其中约有一半的电网是直流电,而爱迪生偏爱该电网,另一半是交流电,而西屋豪斯则偏爱该电网。

标准有时是自己产生的,被称为事实上的标准。 更常见的是,必须由专门授权的机构制定标准以实现这一目标。 对于SQL标准,一些最大的供应商早于该标准。 为了遵守该标准,他们将不得不付出不利于其现有客户群的工程费用。 更糟糕的是,它们可能最终会与自己的先前产品不兼容。

可能完全符合SQL标准,但这不太可能。 即使这样做,在新SQL标准的发展与遵守之间也存在延迟时间。

Walter Mitty answered 2020-06-29T23:11:16Z
2 votes

恕我直言,数据库供应商推动ANSI SQL标准在其领域中包括新功能和构造,这远远超过了ANSI告诉数据库供应商“一种真正的方法”。

数据库市场由功能,可伸缩性和成本驱动。 通过等待ANSI批准语法来放弃并延迟技术优势(即分区,数据透视,UPSERT,复制)不是商业上的优先事项。 到完成时为止,已经大量安装了专有语法。

话虽如此,大多数数据库供应商在过去几年中都大大改进了其核心“ ANSI SQL”支持。 (具有SELECT FROM INFORMATION_SCHEMA和Oracle的ANSI联接的SQL Server实际上以及在CBO下的本机联接都是有效的)

Guy answered 2020-06-29T23:11:46Z
2 votes

根据HSQLDB手册,它是最符合标准的RDBMS。

  • 几乎支持SQL-92的所有语法功能,直至高级
  • SQL:2008核心和此标准的许多可选功能
Janus Troelsen answered 2020-06-29T23:12:15Z
1 votes

真正的原因:大多数“开发人员”都是以客户为中心的编码人员,因此既不了解也不关心Codd博士的12条规则。 这也是为什么在WebKiddie开发中经常看到MySql(它不是关系数据库的任何重要方式)的原因。 这样的开发人员只需要基本的SELECT,UPDATE,DELETE解析。 他们避开任何类型的约束,而是选择“在应用程序中执行”。 反动的1960年代的应用就是您所得到的。

answered 2020-06-29T23:12:35Z
0 votes

他们大多数都非常合规。 但是,这是一个坏消息,IMO-标准助长了平庸。 供应商希望您被锁定在他们的扩展中,并且经常有充分的理由对非标准的事情进行处理。 实际上,您转储Oracle for SQL Server的可能性有多大? 除非您开发一种可以让客户将其用于其他数据库的产品,否则您作为企业就不太可能换出数据库。 太痛苦了。

n8wrl answered 2020-06-29T23:12:56Z
0 votes

公司通常倾向于使用一个供应商来避免拥有不同甚至可能不兼容的系统来支持。 与使用3种不同的工具集相比,培训您的开发人员/系统工程师使用一个数据库供应商的工具也要便宜得多。 后来,这家公司可能会发展壮大,足以收购一些竞争对手。 这意味着您需要管理,集成等的另一套完全不同的工具。

这是很多工作。

想象一下,除此以外,您还有一个可移植层,因此您实际上并不在乎下面的内容。 那会好得多。

Bill Catfish answered 2020-06-29T23:13:25Z
translate from https://stackoverflow.com:/questions/784900/why-does-no-database-fully-support-ansi-or-iso-sql-standards