2011-09-02 17 views
31

Jestem programistą. Używam mysql od lat i teraz mam już pierwsze spotkanie z oracle w projekcie.Jakie są główne różnice między dialektami sql mysql i oracle?

Po prostu powiedziano mi, że powinienem być ostrożny, że sql zachowuje się całkiem inaczej w niektórych przypadkach. Nie mam pojęcia, czego się spodziewać. Głównie szukam oczywistych rzeczy i typowych błędów początkujących.

Na przykład powiedziano mi, że wyrocznia nie ma automatycznego przyrostu.

Tego typu rzeczy szukam. Byłbym wdzięczny za każdą dalszą wiedzę, która pomaga uniknąć tworzenia nowych rozwiązań problemów już rozwiązanych.

+0

+1 za bycie na temat. – Johan

Odpowiedz

29

Oto link z wszystkich różnic między Oracle i MySQL, z firmy, która jest właścicielem zarówno :-)

Należy zachować ostrożność podczas Googling, w Internecie jest dużo nieaktualnych informacji. Zignoruj ​​wszystko, co jest starsze niż 3 lata.

+1

+1 dla odniesienia do widoku konia ;-) – DCookie

+0

oh Nigdy nie znalazłem tego pierwszy dokument. Spojrzałem na ich stronę, ale znalazłem tylko porównanie wydajności, które mnie nie interesuje, ale myślę, że jest to tabela 2.1 na tym łączu Oracle. dzięki – Yashima

+0

Zastanawiam się, czy jakiekolwiek ujednolicenie jest w planach Oracle. Myślę, że głupio jest mieć dwa powiązane produkty z wieloma powierzchownymi niezgodnościami. Lepsza kompatybilność przyniesie nawet korzyść Oracle, jeśli ułatwi przejście z taniego na drogi produkt: - D – marcus

4

Na przykład powiedziano mi, że wyrocznia jako automatyczna inkrementacja.

Oracle ma sekwencje; to tylko inna notacja. Pomysł na wartość kolumny, która jest automatycznie zwiększana na INSERT jest z pewnością.

Oracle będzie dodawać klucze podstawowe i obce jako ograniczenia, niezależnie od definicji tabeli.

PostgreSQL jest najbardziej zbliżoną do Oracle wśród baz danych open source. To także ma sekwencje.

+0

dziękuję, więc mogę stworzyć auto-inkrementację w inny sposób, który jest dobry. do mojej wielkiej wstydu muszę przyznać, że do tej pory widziałem tylko mały kawałek sybase oprócz mysql – Yashima

+4

@ duffymo, możesz zdefiniować ograniczenia i PK w definicji tabeli, jeśli chcesz. Zobacz tutaj definicje ograniczeń wewnętrznych: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm#sthref7519 – DCookie

-1

Grupowanie to główna różnica, ponieważ MySQL ma własną niestandardową interpretację grupowania. Więc jeśli używasz sprytnego grupowania, może się okazać, że Oracle nie wykona twoich zapytań.

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

+0

Jeśli chcesz przetestować zachowanie podobne do Oracle w starym, dobrym MySQL, włącz tryb 'only_full_group_by' zobacz: http://dev.mysql.com/doc/refman/5.6/en/server-sql-mode.html#sqlmode_only_full_group_by – Johan

Powiązane problemy