Oracle
 sql >> Database >  >> RDS >> Oracle

differenze di postgreSQL MySQL Oracle

Qualche anno fa ho dovuto scrivere un motore di traduzione; gli dai da mangiare un set di sql e si traduce nel dialetto del motore attualmente connesso. Il mio motore funziona su Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase e Oracle - oh, e ANTS. Francamente, Oracle è il mio preferito di meno (ne parleremo più avanti)... Sfortunatamente per te, mySql e SQL Server non sono nell'elenco (all'epoca nessuno dei due era considerato un RDBMS serio, ma i tempi cambiano).

Indipendentemente dalla qualità o dalle prestazioni del motore e dalla facilità di creazione e ripristino dei backup, ecco le principali aree di differenza:

  • tipi di dati
  • limiti
  • invalidi
  • parole riservate
  • semantica nulla (vedi sotto)
  • Semantica delle virgolette (virgolette singole ', doppie virgolette " o entrambe)
  • Semantica di completamento delle istruzioni
  • semantica delle funzioni
  • Gestione della data (comprese parole chiave costanti come "adesso" e formati delle funzioni di input/output)
  • se sono consentiti commenti in linea
  • Lunghezze massime degli attributi
  • numero massimo di attributi
  • Semantica di connessione / paradigma di sicurezza.

Senza annoiarti su tutti i dati di conversione, ecco un esempio per un tipo di dati, lvarchar:

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

L'affare più grande di tutti, a mio avviso, è la gestione nulla; Oracle SILENTLY converte stringhe di input vuote in valori null. ... Da qualche parte, TANTO tempo fa, ho letto un articolo che qualcuno aveva fatto su "I diciassette significati di Null" o qualcosa del genere e il vero punto è che i null sono molto preziosi e la distinzione tra una stringa nulla e una stringa vuota è utile e non banale! Penso che Oracle abbia commesso un enorme errore su questo; nessuno degli altri ha questo comportamento (che io abbia mai visto).

Il mio secondo meno preferito era ANTS perché, a differenza di tutti gli altri, hanno FORZATO le regole sciocche per una sintassi perfetta che nessun altro fa assolutamente e sebbene possano essere l'unica azienda DB a fornire una perfetta aderenza allo standard, sono anche una vera seccatura il calcio per cui scrivere il codice.

Di gran lunga il mio preferito è Postgres; è molto veloce in situazioni del _mondo_reale_, ha un ottimo supporto ed è open source/gratuito.