比较MySQL,PostgreSQL和SQLite中的数据库列类型?(跨图)

我正在尝试找到一种在最常用的数据库之间关联列类型的方法:MySQL,PostgreSQL和SQLite。

这是到目前为止的内容,但是恐怕还没有完成,我需要一些经验丰富的人来帮助我完成所有遗漏的类型。

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

回答:

MySQL中的MEDIUMINT是一个奇怪的鸭子(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类型。

我缺少MySQL的INTEGER(别名INT)。它可与pg中的INTEGER相提并论。非常重要的遗漏:VARCHAR和CHAR。从语义上讲,MySQL和PG中的VARCHAR,以及MySQL和PG中的CHAR是相同的,但是在MySQL中,这些类型的最大长度要短得多。在MySQL中,这些类型的最大长度不能超过64kb,以pg

1Gb(字节)为单位。实际的长度说明符以字符数表示,因此,如果您有多字节字符集,则必须将最大长度除以最大字符数,以获得为该字符集指定的理论最大长度。在SQLite中,VARCHAR和CHAR都映射到TEXT

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

我认为MySQL VARBINARY数据类型与PG的BYTEA数据类型最佳。(但实际上,MySQL的BLOB类型也映射到该类型)

MySQL中的FLOAT类型在postgres中应该等同于REAL(在SQLite中也应等同于REAL)MySQL中的DECIMAL类型在postgres中等同于DECIMAL,除了在postgres中,该类型不对精度施加任何限制,而在MySQL的最大精度为(我相信)70。(即70个数字位置)对于MySQL和Postgres而言,NUMERIC是DECIMAL类型的别名。

以上是 比较MySQL,PostgreSQL和SQLite中的数据库列类型?(跨图) 的全部内容, 来源链接: utcz.com/qa/410187.html

回到顶部