在我看来,从个人经验和SO问题和答案来看,SQL实现差异很大.SQL问题的首要问题之一是:您使用的是什么dbms?
在大多数情况下,使用SQL,有几种方法可以构建给定的查询,即使使用相同的方言也是如此.但我觉得有趣的是,各种方法的相对可移植性经常没有被讨论,也没有被高度重视.
但是,即使不考虑任何特定应用程序可能转换的可能性,我认为我们希望我们的技能,习惯和模式尽可能便携.
在使用SQL时,您更倾向于使用标准SQL语法?您如何积极地避免礼仪变化?请在不参考专有偏好的情况下回答,以达到更好的表现,大多数人会承认这通常是足够合法的辩护.
我投票反对标准/供应商独立的sql
实际上很少切换数据库.
没有一个数据库完全符合当前的sql标准.因此,即使您符合标准,您也不是独立于供应商的.
供应商差异超越了sql语法.锁定行为是不同的.隔离级别不同.
数据库测试相当困难并且正在开发中.如果你不是绝对需要它,就不需要在游戏中抛出多个供应商就更难.
供应商特定的调整有很多功能.(想想'限制',或'分析函数',或'提示')
所以精华: - 如果没有要求供应商独立,请专门为您实际使用的供应商. - 如果要求供应商独立,请确保谁支付账单,这将花费金钱.确保每个rdbms都可用于测试.并使用它 - 将每一段sql放在一个可插拔的特殊层中,这样你就可以使用数据库的强大功能并与不同的供应商合作 - 只有在差异是纯语法问题的地方才符合标准,例如使用oracle表示法(外部)连接与ANSI标准语法.
我们非常认真地对待我们的商店.我们不允许非标准SQL或扩展,除非它们在所有主要平台上都受支持.即便如此,他们在代码中被标记为非标准,并且必须提供理由.
应用程序开发人员无法快速运行查询,我们可以明确分离职责.该查询仅由DBMS本身或DBMS的DBA调优进行优化.
真正的数据库,比如DB2/z :-),可以快速处理标准SQL.
我们强制执行此操作的原因是为客户提供选择.他们不喜欢被锁定在特定供应商的想法比我们更多.