Liste over ting, jeg ville gøre anderledes:
MEDIUMINT i MySQL er en ulige and (3 bytes). Jeg ville undgå det, men ellers map det til INTEGER også.
MySQL BOOLEAN (alias BOOL, alias TINYINT(1) ) er ikke kompatibel med pg boolean-typen. Du kan muligvis ikke portere apps afhængigt af, hvad de bruger som booleske bogstaver. I MySQL kortlægger TRUE og FALSE til 1 og 0 heltalsværdier. Det ser ud til, at pg BOOLEAN-typen bruger strengnotation. Så apps kan eller kan ikke være bærbare - i det mindste er det ingen drop i erstatning.
Til sidst, for den sidste linje i din tabel, tror jeg, at SQLite-sætningen skal læse:
INTEGER PRIMARY KEY AUTOINCREMENT
Dette svarer nogenlunde til
BIGINT PRIMARY KEY AUTO_INCREMENT
i MySQL. I postgres resulterer SERIAL-datatypen i en INTEGER-kolonne, og dette vil omtrent være det samme som MySQL's
INTEGER PRIMARY KEY AUTO_INCREMENT
Postgres har også en BIGSERIAL-type, som er den samme som SERIAL, men med en BIGINT-type i stedet for en INT-type.
Hvad jeg gik glip af:
Jeg mangler INTEGER (alias INT) til MySQL. Det kan sammenlignes med INTEGER på side. Meget vigtige udeladelser:VARCHAR og CHAR. Semantisk er VARCHAR i MySQL og PG, og CHAR i MySQL og PG de samme, men i MySQL har disse typer en meget kortere maksimal længde. I MySQL kan disse typer maksimalt have lidt mindre end 64kb, i pg 1Gb (bytes). Den faktiske længdeangivelse er udtrykt i antallet af tegn, så hvis du har et multi-byte tegnsæt, skal du dividere den maksimale længde med det maksimale antal tegn for at få den teoretiske maksimale længde angivet for det pågældende tegnsæt. I SQLite knytter VARCHAR og CHAR begge til TEXT
BIT-datatyperne i MySQL og PG har nogenlunde samme semantik, men i MySQL er den maksimale længde af BIT-datatypen 64 (bit)
Jeg tror, at MySQL VARBINARY-datatypen bedst kan sammenlignes med PG's BYTEA-datatype. (men MySQL's BLOB-typer knytter sig også til det)
FLOAT-typen i MySQL skal svare til REAL i postgres (og REAL i SQLite også) DECIMAL-typen i MySQL svarer til DECIMAL i postgres, bortset fra at i postgres sætter typen ikke en vilkårlig grænse for præcisionen, hvorimod i MySQL er den maksimale præcision (tror jeg) 70. (det vil sige 70 talpositioner) For både MySQL og Postgres er NUMERIC et alias for typen DECIMAL.