For nogle år siden skulle jeg skrive en oversættelsesmaskine; du fodrer det med et sæt sql, og det oversættes til dialekten for den aktuelt tilsluttede motor. Min motor virker på Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase og Oracle - åh, og ANTS. Helt ærligt, Oracle er min mindste favorit (mere om det nedenfor)... Desværre for dig er mySql og SQL Server ikke på listen (på det tidspunkt blev ingen af dem betragtet som en seriøs RDBMS - men tiderne ændrer sig).
Uden hensyn til kvaliteten eller ydeevnen af motoren - og lette at lave og gendanne sikkerhedskopier - her er de primære forskelle:
- datatyper
- grænser
- ugyldige
- reserverede ord
- nul-semantik (se nedenfor)
- citat semantik (enkelt anførselstegn ', dobbelt anførselstegn " eller enten)
- semantik for fuldførelse af erklæringer
- funktionssemantik
- datohåndtering (herunder konstante søgeord som "nu" og input-/outputfunktionsformater)
- om indlejrede kommentarer er tilladt
- maksimal attributlængde
- maksimalt antal attributter
- forbindelsessemantik / sikkerhedsparadigme.
Uden at kede dig med alle konverteringsdataene, er her et eksempel på én datatype, lvarchar:
oracle=varchar(%x) sybase=text db2="long varchar" informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)
Den største aftale af alle, efter min mening, er nulhåndtering; Oracle SILENTLY konverterer tomme inputstrenge til nulværdier. ...Et eller andet sted, for LÆNGE siden, læste jeg en opskrivning, som nogen havde skrevet om "The Seventeen Meanings of Null" eller sådan noget, og den egentlige pointe er, at nuller er meget værdifulde, og at skelnen mellem en nulstreng og en tom streng er nyttigt og ikke-trivielt! Jeg tror, at Oracle lavede en kæmpe fejl på denne; ingen af de andre har denne adfærd (som jeg nogensinde har set).
Min næstmindste favorit var ANTS, fordi i modsætning til alle de andre håndhævede de de fjollede regler for perfekt syntaks, som absolut ingen andre gør, og selvom de måske er det eneste DB-firma, der leverer perfekt overholdelse af standarden, er de også en kongelig smerte i numsen at skrive kode for.
Langt væk er min favorit Postgres; den er meget hurtig i _virkelige_verden_ situationer, har stor støtte og er open source/gratis.