私は 列の種類を関連付ける に最もよく使用されるデータベース全体で 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と同じですが、INT型ではなくBIGINT型です。
私が見逃したもの:
MySQLのINTEGER(エイリアスINT)がありません。 pgのINTEGERに匹敵します。非常に重要な省略:VARCHARおよびCHAR。意味的には、MySQLとPGのVARCHAR、およびMySQLとPGのCHARは同じですが、MySQLではこれらの型の最大長ははるかに短くなっています。 MySQLでは、これらのタイプは最大で64 kb未満(pg 1 Gb(バイト))になります。実際の長さ指定子は文字数で表されるため、マルチバイト文字セットがある場合、その文字セットに指定されている理論上の最大長を取得するには、最大文字数で最大長を除算する必要があります。 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と同等です。 MySQLの最大精度は(私は信じます)70です(つまり、70の数字位置)。MySQLとPostgresの両方で、NUMERICはDECIMALタイプのエイリアスです。