Just went through this myself, well I still am…
- Case sensitive text
- Lack of
INSERT IGNOREandREPLACE - Explicit casting needed almost everywhere
- No backticks
LOAD DATA INFILE(COPYis close, but not close enough)- Change
autoincrementtoSERIAL - Although bad form in MySQL, in Postgres, an
INNER JOINwithout anONclause can’t happen, useCROSS JOINor the like COUNT(*)can be crazy slow- Databases are encoded with character sets, not tables
- You can have multiple databases, with multiple schemas (MySQL really has just one database and multiple schema)
- Partitioning is different
- MySQL
intervalvs. Postgresinterval(for time intervals) - Implicit column renaming, Postgres requires
AS - Cannot update multiple tables at the same time in Postgres
- Postgres functions are powerful. So there is no
CALL proc();; rewriteproc()as a function andSELECT proc();.