Oracle
 sql >> Baza danych >  >> RDS >> Oracle

PostgreSQL mysql różnice w wyroczni

Kilka lat temu musiałem napisać silnik tłumaczący; karmisz go jednym zestawem sql i przekłada się to na dialekt aktualnie podłączonego silnika. Mój silnik działa na Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase i Oracle - och i ANTS. Szczerze mówiąc, Oracle jest moim najmniej ulubionym (więcej na ten temat poniżej).

Bez względu na jakość lub wydajność silnika – oraz łatwość tworzenia i przywracania kopii zapasowych – oto główne obszary różnic:

  • typy danych
  • limity
  • nieprawidłowe
  • zarezerwowane słowa
  • pusta semantyka (patrz poniżej)
  • semantyka cudzysłowów (pojedynczy cudzysłów „, podwójny cudzysłów” lub jedno z nich)
  • semantyka uzupełniania instrukcji
  • semantyka funkcji
  • obsługa dat (w tym stałe słowa kluczowe, takie jak „teraz” i formaty funkcji wejścia/wyjścia)
  • czy dozwolone są komentarze w tekście
  • maksymalne długości atrybutów
  • maksymalna liczba atrybutów
  • semantyka połączenia / paradygmat bezpieczeństwa.

Nie nudząc Cię wszystkimi danymi konwersji, oto próbka dla jednego typu danych, lvarchar:

oracle=varchar(%x) sybase=text db2="long varchar" informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)

Moim zdaniem największą ze wszystkich jest obsługa zerowa; Oracle SILENTLY konwertuje puste ciągi wejściowe na wartości null. …Gdzieś, DUŻY czas temu, przeczytałem artykuł, który ktoś napisał na temat „Siedemnastu znaczeń wartości zerowych” lub czegoś podobnego, i tak naprawdę chodzi o to, że wartości null są bardzo cenne, a rozróżnienie między łańcuchem pustym a łańcuchem pustym jest przydatne i nietrywialne! Myślę, że Oracle popełniło ogromny błąd w tym przypadku; żaden z pozostałych nie ma takiego zachowania (którego kiedykolwiek widziałem).

Moim drugim najmniej faworytem były ANTS, ponieważ w przeciwieństwie do wszystkich innych, WYKONUJĄC głupie zasady doskonałej składni, których absolutnie nikt inny nie robi i chociaż mogą być jedyną firmą DB, która zapewnia doskonałe przestrzeganie standardu, są również królewskim bólem w tyłek do pisania kodu.

Zdecydowanie moim ulubionym jest Postgres; jest bardzo szybki w sytuacjach _real_world_, ma świetne wsparcie i jest open source / bezpłatny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacze prewencyjne

  2. Porady dotyczące korzystania z tabeli przestawnej w Oracle

  3. Usunąć wszystkie rekordy oprócz ostatniego?

  4. Wielkie litery w nazwiskach osób w programowaniu

  5. Filtrowanie dzienników alertów w EM13c