Список вещей, которые я бы сделал по-другому:
MEDIUMINT в MySQL - странная утка (3 байта). Я бы избегал этого, но в противном случае сопоставил бы его с INTEGER.
MySQL BOOLEAN (псевдоним BOOL, псевдоним TINYINT (1)) не совместим с логическим типом pg. Вы можете или не сможете портировать приложения в зависимости от того, что они используют в качестве логических литералов. В MySQL значения TRUE и FALSE соответствуют 1 и 0 целочисленным значениям. Похоже, что тип pg BOOLEAN использует строковые литеральные обозначения. Так что приложения могут быть или не быть портативными - по крайней мере, это не падение замены.
Наконец, для последней строки в вашей таблице я думаю, что фраза SQLite должна выглядеть следующим образом:
INTEGER PRIMARY KEY AUTOINCREMENT
Это примерно эквивалентно
BIGINT PRIMARY KEY AUTO_INCREMENT
в MySQL. В postgres тип данных SERIAL приводит к столбцу INTEGER, и он будет примерно таким же, как MySQL
INTEGER PRIMARY KEY AUTO_INCREMENT
Postgres также имеет тип BIGSERIAL, такой же, как SERIAL, но с типом BIGINT вместо типа INT.
Что я пропустил:
Мне не хватает INTEGER (псевдоним INT) для MySQL. Это сопоставимо с INTEGER в pg.
Очень важные упущения:
VARCHAR и CHAR. Семантически VARCHAR в MySQL и PG и CHAR в MySQL и PG одинаковы, но в MySQL эти типы имеют гораздо более короткую максимальную длину. В MySQL эти типы могут иметь максимум чуть менее 64 КБ, в pg 1 ГБ (байт). Фактический спецификатор длины выражается в количестве символов, поэтому, если у вас есть многобайтовый набор символов, вы должны разделить максимальную длину на максимальное количество символов, чтобы получить теоретическую максимальную длину, указанную для этого набора символов. В SQLite VARCHAR и CHAR сопоставляются как TEXT
Типы данных BIT в MySQL и PG имеют примерно одинаковую семантику, но в MySQL максимальная длина типа данных BIT составляет 64 (бит)
Я думаю, что тип данных MySQL VARBINARY лучше всего сопоставим с типом данных PG BYTEA. (но на самом деле типы BLOB в MySQL также соответствуют этому)
Тип FLOAT в MySQL должен быть эквивалентен REAL в postgres (и REAL в SQLite тоже)
Тип DECIMAL в MySQL эквивалентен DECIMAL в postgres, за исключением того, что в postgres тип не накладывает ограничение точности arbtrary на точность, тогда как в MySQL максимальная точность равна (я полагаю) 70. (то есть 70 числовых позиций)
И для MySQL, и для Postgres NUMERIC - это псевдоним типа DECIMAL.