Il y a quelques années, j'ai dû écrire un moteur de traduction; vous lui donnez 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 favori (plus sur cela 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 égard à la qualité ou la performance du moteur - et la facilité de fabrication et la restauration des sauvegardes - voici les principaux domaines de la différence:
- types de données
- limites
- invalides
- réservés mots
- null sémantique (voir ci-dessous)
- citation sémantique (guillemets simples ', double citation', ou e ither)
- sémantique d'achèvement de l'instruction
- sémantique de la fonction
- Date de manutention (y compris des mots-clés constants comme 'maintenant' et entrée/formats fonction de sortie)
- si les commentaires en ligne sont autorisés
- attribut longueurs maximales
- nombre maximal d'attributs
- paradigme de sémantique/sécurité de connexion.
Sans vous ennuyer sur toutes les données de conversion, voici un échantillon 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)
La plus grosse affaire de toutes, à mon avis, est la gestion du zéro; Oracle convertit SILENTLY les chaînes d'entrée vierges 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", et le point réel est que les NULL sont très précieux et la distinction entre une chaîne vide et une chaîne vide est utile et non-trivial! 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 plus petit favori était ANTS parce que contrairement à tous les autres, ils ont appliqué les règles stupides pour la syntaxe parfaite que personne d'autre ne fait et même s'ils sont peut-être la seule société DB à fournir une parfaite conformité à la norme, ils sont aussi une douleur royale dans le cul pour écrire un code pour.
De loin, mon préféré est Postgres; C'est très rapide dans les situations _real_world_, il a un très bon support et est open source/gratuit.
Oracle recommande d'utiliser varchar2 et non varchar. –
Merci pour la mise à jour, Mark. Je vais m'assurer que cela sera propagé dans le moteur - et prendre un moment pour chercher d'autres mises à jour, aussi. RT –