2011-09-02 83 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

相關問題