2011-09-21 9 views
31

Większość SQL bazy danych zgodne ze standardami ANSI SQL do pewnego stopnia, aleLista różnic między SQL baz

  1. standard jest dwuznaczny, pozostawiając pewne obszary otwarte na interpretację (np: jak różne operacje z NULLs powinny być obsługiwane is ambiguous)

  2. Niektórzy producenci sprzeczne średnia wprost lub po prostu brak funkcjonalności określone przez normę (np: MySQL ma list of differences między normą i ich realizacji)

  3. Niektóre bazy danych będą się różnie zachowywać w zależności od konfiguracji, ale konfigurację można zmienić tak, aby zachowywały się w taki sam sposób (np. Oracle wykonuje domyślnie rozróżnianie wielkości liter w rozróżnianiu wielkości liter, podczas gdy SQL Server nie uwzględnia ich wielkości)

  4. istnieją pewne funkcje, które nie jest częścią standardu, ale jest realizowana przez różne RDBMSs tak, choć z różnymi nazwami (np: Oracle LISTAGG = MySQL GROUP_CONCAT)

Czy istnieje zasób z kompleksowym lista dziwactw i gróźb, na które należy zwracać uwagę, gdy próbujesz pisać coś, co ma być kompatybilne z wieloma bazami danych?

+0

+1 wartościowe pytanie. Jedną z rzeczy, na które należy zwrócić uwagę, jest to, że nie tylko napotkasz problemy z kompatybilnością, ale także powinieneś rozważyć testowanie swoich rozwiązań na głównych obsługiwanych RDBMS, aby upewnić się, że nie ma żadnego niezrozumiałego trafienia wydajności i że nie ma jeszcze niczego nieudokumentowanego. Pod koniec dnia powinieneś się ukryć i powiedzieć, które platformy wspierasz, stwierdzając, że inne platformy mogą być obsługiwane później. – Seph

+0

Rzeczywiście, cenne pytanie, które niestety pozostaje bez odpowiedzi. – FDavidov

+1

Podoba mi się szybkie odwołanie do OReilly SQL, ponieważ pokazuje mi różne składnie i różnice między kilkoma dialektami. Niestety jest to ruchomy cel z nowymi funkcjami i zmianami, gdy tylko pojawią się nowe wersje. Istnieje również http://sqlfiddle.com/, która pozwala wypróbować kilka różnych wersji serwerów (oracle, mysql, ...), a nawet wersje danego serwera (mysql 5.5 i 5.6). – argoc

Odpowiedz

Powiązane problemy