我正试图找到一些方法,在最常用的数据库中找到relate column types个:MySQLPostgreSQLSQLite.

这是我到目前为止所做的,但恐怕还没有完成,我需要一些有更多经验的人来帮助我完成任何缺失的类型.

MySQL                   PostgreSQL          SQLite

TINYINT                 SMALLINT            INTEGER
SMALLINT                SMALLINT
MEDIUMINT               INTEGER
BIGINT                  BIGINT
BIT                     BIT                 INTEGER
_______________________________________________________

TINYINT UNSIGNED        SMALLINT            INTEGER
SMALLINT UNSIGNED       INTEGER
MEDIUMINT UNSIGNED      INTEGER
INT UNSIGNED            BIGINT
BIGINT UNSIGNED         NUMERIC(20)
_______________________________________________________

DOUBLE                  DOUBLE PRECISION    REAL
FLOAT                   REAL                REAL
DECIMAL                 DECIMAL             REAL
NUMERIC                 NUMERIC             REAL
_______________________________________________________

BOOLEAN                 BOOLEAN             INTEGER
_______________________________________________________

DATE                    DATE                TEXT
TIME                    TIME
DATETIME                TIMESTAMP
_______________________________________________________

TIMESTAMP DEFAULT       TIMESTAMP DEFAULT   TEXT
NOW()                   NOW()   
_______________________________________________________

LONGTEXT                TEXT                TEXT
MEDIUMTEXT              TEXT                TEXT
BLOB                    BYTEA               BLOB
VARCHAR                 VARCHAR             TEXT
CHAR                    CHAR                TEXT
_______________________________________________________

columnname INT          columnname SERIAL   INTEGER PRIMARY 
AUTO_INCREMENT                              KEY AUTOINCREMENT

推荐答案

List of things I'd do differently:

MySQL中的MEDIUMINT是一个奇怪的duck(3字节).我会避免使用它,但也会将其映射为整数.

MySQL BOOLEAN(别名BOOL,别名TINYINT(1))与pg BOOLEAN类型不兼容.根据应用程序作为布尔文本使用的内容,您可能无法移植应用程序.在MySQL中,TRUE和FALSE映射为1和0整数值.pg布尔类型似乎使用字符串文字表示法.因此,应用程序可能是便携式的,也可能不是便携式的——至少它不是替代品.

最后,我认为SQLite的最后一行应该是:

INTEGER PRIMARY KEY AUTOINCREMENT

这大致相当于

BIGINT PRIMARY KEY AUTO_INCREMENT

在MySQL中.在postgres中,串行数据类型会产生一个整数列,这与MySQL差不多

INTEGER PRIMARY KEY AUTO_INCREMENT

Postgres还有一个BIGSERIAL类型,它与SERIAL相同,但使用BIGINT类型而不是INT类型.

What I missed:

我缺少MySQL的整数(别名INT).它与pg中的整数相当.

MySQL和PG中的位数据类型具有大致相同的语义,但在MySQL中,位数据类型的最大长度为64(位)

我认为MySQL VARBINARY数据类型最好与PG的BYTEA数据类型相比较.(但实际上MySQL的BLOB类型也映射到了这一点)

MySQL中的FLOAT类型应该与postgres中的REAL(以及SQLite中的REAL)等效

Mysql相关问答推荐

对象NotExecutabletry 在远程SQL服务器上执行SQL时出错,并使用SQLAchemy.Create_engine

MySQL 8.0.28覆盖(和函数)索引未使用

SQL-从一个字段中 Select 值,但另一个字段中不包含零值

为什么MySQL不考虑在联接中使用(JSON)函数索引,而考虑在生成的列上使用索引?

Python - 执行原始 SQL 时获取更新查询 (Mysql) 的结果

MySQL:获取连续记录的数量(日期)?

如何计算具有权重属性的记录数

在 MYSQL 8 中的 JSON 字段上的 SELECT 中返回所有键及其数组项

分别针对每个不同的列 Select 聚合

MySQL DISTINCT 日期仅返回特定表的 1 个值.相同的查询适用于其他表

SQL / MySQL:如何在WHERE IN中判断类似于OR的AND逻辑

创建将列与多个值进行比较的索引

如何通过未知列中的唯一值有效地更新 MySQL 行

如何使用nodejs从mysql数据库中获取最新的10条记录?

MySql - 默认情况下主键是唯一的吗?

没有 JDBC 类型的方言映射:1111

在 PHP 中获取 MySQL 列的总和

我如何决定何时使用右连接/左连接或内连接或者如何确定哪个表在哪一侧?

如何用一系列日期填充表格?

如何让mysql自动启动? (仅限 linux-cli)