Подключение
#MySQL
mysql -h 127.0.0.1 -u root -p
#PostgreSQL
psql -h 127.0.0.1 -U postgres
Типы данных
#MySQL
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT FLOAT, DOUBLE, DECIMAL CHAR, VARCHAR TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB DATE, DATETIME, TIMESTAMP, TIME, YEAR JSON ENUM, SET
#PostgreSQL
SMALLINT, INTEGER, BIGINT REAL, DOUBLE PRECISION, NUMERIC CHAR, VARCHAR, TEXT BYTEA DATE, TIME, TIMESTAMP, TIMESTAMPTZ, INTERVAL BOOLEAN JSON, JSONB, XML UUID ENUM, ARRAY
Регистрозависимость
#MySQL
Имена столбцов по умолчанию нечувствительны к регистру - столбцы Name и NAME считаются одинаковыми. Имена столбцов, содержащие пробелы или совпадающие с ключевыми словами, заключаются в обратные кавычки (`), например: `User name`.
#PostgreSQL
Регистрозависимость действует с оговорками. Если имя столбца указано без двойных кавычек, то Name и NAME считаются одним и тем же именем, так как PostgreSQL автоматически приводит такие идентификаторы к нижнему регистру. Если же имя указано в двойных кавычках, то "Name" и "NAME" считаются разными столбцами. Для составных имён и имён, совпадающих с ключевыми словами, также используются двойные кавычки, например: "User name".
Ограничения (Constraints)
#MySQL
Ограничения используются для обеспечения целостности данных и могут задаваться как на уровне столбцов, так и на уровне таблиц. Поддерживаются основные типы ограничений: PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK (полноценно - начиная с MySQL 8.0.16) и NOT NULL; при этом имена ограничений не обязательны и часто генерируются автоматически.
#PostgreSQL
Ограничения являются полноценной частью модели данных и строго контролируются системой. Поддерживаются все основные типы ограничений (PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK, NOT NULL), при этом ограничениям рекомендуется явно задавать имена, так как они активно используются в сообщениях об ошибках и при дальнейшем сопровождении схемы.
test
Source: Orkhan Alishov's notes