Il y a quelques années, j'ai dû écrire un moteur de traduction; vous lui fournissez un ensemble de sql et il se traduit par le dialecte du moteur actuellement connecté. Mon moteur fonctionne sur Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase et Oracle - oh, et ANTS. Franchement, Oracle est mon moins préféré (plus de détails ci-dessous)... Malheureusement pour vous, mySql et SQL Server ne sont pas sur la liste (à l'époque, aucun n'était considéré comme un SGBDR sérieux - mais les temps changent).
Sans tenir compte de la qualité ou des performances du moteur - et de la facilité de création et de restauration des sauvegardes - voici les principales différences :
- types de données
- limites
- invalides
- mots réservés
- sémantique nulle (voir ci-dessous)
- sémantique des guillemets (apostrophe ', guillemet double ", ou l'un ou l'autre)
- sémantique de complétion des instructions
- sémantique des fonctions
- gestion des dates (y compris les mots-clés constants comme "maintenant" et les formats de fonction d'entrée/sortie)
- si les commentaires intégrés sont autorisés
- longueurs d'attribut maximales
- nombre maximal d'attributs
- sémantique de connexion/paradigme de sécurité.
Sans vous ennuyer avec toutes les données de conversion, voici un exemple pour un type de données, lvarchar :
oracle=varchar(%x) sybase=text db2="long varchar" informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)
Le plus gros problème, à mon avis, est la manipulation nulle; Oracle SILENTLY convertit les chaînes d'entrée vides en valeurs nulles. ... Quelque part, il y a LONGTEMPS, j'ai lu un article que quelqu'un avait écrit sur "Les dix-sept significations de Null" ou quelque chose du genre et le vrai point est que les valeurs nulles sont très précieuses et la distinction entre une chaîne nulle et une chaîne vide est utile et non négligeable ! Je pense qu'Oracle a fait une énorme erreur sur celui-ci; aucun des autres n'a ce comportement (que j'ai jamais vu).
Mon deuxième moins préféré était ANTS car contrairement à tous les autres, ils ont IMPLIQUÉ les règles stupides pour une syntaxe parfaite que personne d'autre ne fait absolument et bien qu'ils soient peut-être la seule société DB à fournir une adhésion parfaite à la norme, ils sont aussi une douleur royale dans le cul pour écrire du code.
De loin, mon préféré est Postgres ; il est très rapide dans des situations _real_world_, bénéficie d'un excellent support et est open source / gratuit.