首页 / MYSQL / mysql – 数据库SQL兼容性
mysql – 数据库SQL兼容性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 数据库SQL兼容性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1495字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 数据库SQL兼容性](/upload/InfoBanner/zyjiaocheng/897/275a3cbfb78943d6be09e4d5e27f0945.jpg)
我正在将使用Sqlite3开发的Ruby on Rails应用程序部署到具有MySQL或PostgreSQL的服务器.我很快发现,我正在大量使用“group by”和“strftime”函数来生成按月汇总报告,这些函数在各种数据库之间的工作方式不同或不兼容.
我可以重构我的代码来进行分组,求和和平均 – 但数据库做得很好,减少了服务器所需的处理!高级应用程序超越了简单的选择和加入. ActiveRecord给我们:group,但DATABASES并不一致.
所以我的问题是架构问题 – 有人希望在Ruby on Rails中创建真正的“数据库可移植”应用程序吗?我应该修改我的代码库以仅使用MySQL而忘记其他数据库吗?我应该修改我的代码库来进行高级分组,求和和平均吗?
欢呼 – 唐
解决方法:
几条评论:
>使用您要部署的相同RDBMS品牌和版本进行开发和测试.
>编写可移植的SQL代码很难,因为供应商拥有所有这些非标准的额外功能和特性.例如,strftime()不是ANSI SQL标准的一部分.解决此问题的唯一方法是为您使用的每个数据库使用RTM,并了解它们共有的功能.有时它们具有不同名称的功能,您可以以类似的方式使用它们.这方面没有捷径 – 你必须学习手册.
>所有数据库都支持GROUP BY,但SQLite和MySQL对某些用法比标准ANSI SQL(以及遵循该标准的所有其他品牌数据库)更宽松.具体来说,在GROUP BY子句中,必须将选择列表中不属于分组函数的每一列命名.
以下两个例子是正确的:
SELECT A, B, COUNT(C) FROM MyTable GROUP BY A, B;
SELECT A, COUNT(C) FROM MyTable GROUP BY A;
但是下一个是错误的,因为B每个组有多个值,并且它应该在给定行中返回哪个值是不明确的:
SELECT A, B, COUNT(C) FROM MyTable GROUP BY A;
>没有框架可以写真正的可移植SQL. Rails的ActiveRecord仅在非常简单的情况下解决了这个问题.实际上,ActiveRecord有助于解决您提供的示例,品牌特定的功能和非标准的GROUP BY子句.
内容总结
以上是互联网集市为您收集整理的mysql – 数据库SQL兼容性全部内容,希望文章能够帮你解决mysql – 数据库SQL兼容性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。