maggior parte dei database SQL seguono gli standard ANSI SQL ad un grado, maElenco delle differenze tra i database SQL
Lo standard è ambigua, lasciando alcune aree soggette a interpretazione (ad esempio: come le diverse operazioni con
NULLs
dovrebbe essere gestito is ambiguous)Alcuni fornitori contraddicono la vera e propria norma o semplicemente mancanza di funzionalità definite dallo standard (ad esempio: MySQL ha un list of differences tra la norma e la loro attuazione)
Alcuni database si comportano in modo diverso a seconda di come sono configurati, ma la configurazione può essere modificata in modo che si comportino allo stesso modo (ad esempio: Oracle esegue confronti con distinzione tra maiuscole e minuscole per impostazione predefinita, mentre SQL Server li rende insensibili)
c'è alcune funzionalità che non fa parte dello standard, ma è implementato da diversi RDBMS in ogni caso, anche se con nomi diversi (es: Oracle
LISTAGG
= di MySQLGROUP_CONCAT
)
c'è una risorsa con un approccio globale elenco di quirks e trucchi per prestare attenzione a quando stai cercando di scrivere qualcosa che dovrebbe essere compatibile con più database?
+1 preziosa domanda. Una cosa da tenere presente è che non solo incontrerai problemi di compatibilità, dovresti anche prendere in considerazione la possibilità di testare le tue soluzioni sui principali RDBMS supportati per assicurarti che non ci siano risultati di prestazioni oscure e che non ci sia ancora nulla di non documentato. Alla fine della giornata dovresti occuparti di te stesso e dire quali piattaforme supporti in modo specifico, affermando che altre piattaforme potrebbero essere supportate in seguito. – Seph
Davvero una domanda preziosa che, sfortunatamente, rimane senza risposta. – FDavidov
Mi piace il riferimento rapido di OReilly SQL perché mi mostra una varietà di sintassi e differenze tra diversi dialetti. Sfortunatamente questo è un bersaglio mobile con nuove funzionalità e cambia ogni volta che escono nuove versioni. C'è anche http://sqlfiddle.com/ che ti permetterà di provare diverse versioni di server (oracle, mysql, ...) e persino versioni di un determinato server (mysql 5.5 e 5.6). – argoc