1. TINYINT
- MySQL:
TINYINT 是一个非常小的整数类型,通常用于存储范围较小的整数(-128 到 127 或 0 到 255)。
- PostgreSQL: PostgreSQL 没有
TINYINT 类型,但你可以使用 SMALLINT(-32,768 到 32,767)来代替,或者在应用逻辑上确保字段值在 TINYINT 的范围内。
2. MEDIUMINT
- MySQL:
MEDIUMINT 存储的整数范围为 -8,388,608 到 8,388,607(有符号)或 0 到 16,777,215(无符号)。
- PostgreSQL: PostgreSQL 没有
MEDIUMINT 类型,但你可以使用 INTEGER(-2,147,483,648 到 2,147,483,647)类型来代替。PostgreSQL 本身不支持无符号整数,因此如果需要存储无符号的数字,你可能需要使用 BIGINT 或应用程序级别的验证。
CREATE TABLE example (
medium_column INTEGER
);
3. DATETIME
- MySQL: 存储日期和时间,格式为
YYYY-MM-DD HH:MM:SS。最大精度为微秒。
- PostgreSQL:
TIMESTAMP 类型提供相同的功能,格式为 YYYY-MM-DD HH:MM:SS,支持精度设置为微秒。PostgreSQL 不区分 DATETIME 和 TIMESTAMP,二者完全等效。
sqlCopy Code
CREATE TABLE example (
created_at TIMESTAMP
);
4. AUTO_INCREMENT
- MySQL:
AUTO_INCREMENT 是 MySQL 中用于自动生成递增整数值的关键字,通常用于主键。
- PostgreSQL: PostgreSQL 使用
SERIAL 或 BIGSERIAL 数据类型来实现自增字段,或者可以使用 SEQUENCE 配合 DEFAULT nextval('sequence_name')。
CREATE TABLE example (
id SERIAL PRIMARY KEY
);
5. BIT
- MySQL:
BIT 类型用于存储二进制数据,通常用于存储布尔值(0 或 1)或者二进制标志。
- PostgreSQL: PostgreSQL 使用
BOOLEAN 类型来存储布尔值(TRUE 或 FALSE)。但对于其他二进制数据,可以使用 BIT 类型和 BIT VARYING 类型来存储二进制数据。
- 有时mysql中也会用integer类型做bool,也要注意转写
CREATE TABLE example (
is_active BOOLEAN
);
6. BLOB/TEXT
- MySQL:
BLOB 和 TEXT 类型用于存储大量数据(如图像、文档等)。
- PostgreSQL: PostgreSQL 没有
BLOB 类型,但它有 BYTEA 类型用于存储二进制数据,TEXT 类型用于存储变长字符串,BYTEA 更常用于代替 BLOB 类型。
CREATE TABLE example (
data BYTEA
);
7. Unsigned Integer Types
- MySQL: MySQL 允许将整数类型(如
INT)定义为无符号(UNSIGNED),从而扩展存储范围。
- PostgreSQL: PostgreSQL 不支持无符号整数类型,因此如果你需要存储无符号整数,需要手动验证数值或者使用
BIGINT 来代替。