2011-09-02 45 views
31

我是一名软件开发人员。我已经使用了多年的mysql,现在我即将在一个项目中遇到与oracle的第一次碰撞。mysql和oracle sql方言之间的主要区别是什么?

我刚刚被告知我应该小心SQL在某些情况下表现完全不同。我不知道会发生什么。我主要是在寻找明显的东西和典型的初学者错误。

例如,我被告知oracle没有自动递增。

这是我正在寻找的东西的类型。我很感激任何进一步的知识,有助于避免为已解决的问题创建新的解决方案。

+0

+1为主题。 – Johan

回答

29

这里的所有的Oracle和MySQL之间的差异的链接,从拥有两个:-)

要小心,当公司网上有很多过时的信息。忽视任何超过3年的事情。

+1

+1引用马的视图;-) – DCookie

+0

哦,我从来没有找到这个第一份文件。我确实看过他们的页面,但只找到了我不感兴趣的性能比较,但我认为该链接的表2.1是我正在寻找的!谢谢 – Yashima

+0

我想知道Oracle的计划是否有任何一种统一。我认为有两个相关产品存在许多表面不兼容的情况是很愚蠢的。如果兼容性更好,它将使甲骨文更容易从廉价产品转向昂贵产品:-D – marcus

4

例如,我被告知oracle没有自动递增。

Oracle有序列;这只是一个不同的符号。在INSERT上自动递增的列值的想法当然是存在的。

Oracle将您添加主键和外键作为约束,与表定义分开。

PostgreSQL是开源数据库中最接近Oracle的东西。它也有序列。

+0

谢谢,所以我可以用不同的方式创建自动增量。我非常遗憾,我不得不承认迄今为止,除了mysql之外,我只看到了一小部分的sybase – Yashima

+4

@duffymo,如果你愿意,你可以在表定义中定义约束和PK。请参阅此处的内嵌约束定义:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm#sthref7519 – DCookie

-1

分组是一个主要的区别,因为MySQL对分组有其自己的非标准解释。所以如果你使用了很多聪明的分组,你可能会发现Oracle不会执行你的查询。

http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html

+0

如果要在旧的MySQL中测试类似Oracle的分组行为,请启用'only_full_group_by'模式请参阅:http://dev.mysql.com/doc/refman/5.6/en/server-sql-mode.html#sqlmode_only_full_group_by – Johan

相关问题