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

postgreSQL mysql oracle forskelle

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.



  1. Kom godt i gang med GearHost til MySQL-databaseudvikling

  2. PL/pgSQL-funktioner:Sådan returneres en normal tabel med flere kolonner ved hjælp af en execute-sætning

  3. SQL Server TempDB-overvågning ved hjælp af Dynamic Management Views (DMV)

  4. Fejl:Der findes bordplads til tabel xxx. Kassér venligst bordpladsen før IMPORT