1. 数値型
| 属性 | PostgreSQL | MySQL | 備考 |
|---|---|---|---|
| 整数 | SMALLINT | SMALLINT |
MySQLのUNSIGNEDオプションはPostgreSQLでは上位の型を選択して対応する。 例) INT UNSIGNED → BIGINT |
| INTEGER | INT | ||
| BIGINT | BIGINT | ||
| ユーザ指定精度 | DECIMAL NUMERIC |
DECIMAL NUMERIC DEC |
MySQLのDECは使わない。 |
| 浮動小数点数 | REAL | FLOAT |
・PostgreSQLのREALは4Byte、MySQLのREALは8Byteなので注意。 ・実用上は問題ないと思うけど数値範囲が微妙に違うのでこれにも注意する事。 |
| DOUBLE | DOUBLE REAL |
||
| その他 | SERIAL | -- | PostgreSQLのSERIAL型はMySQLではAUTO_INCREMENTを設定して対応する。 |
2. 文字列型
| 属性 | PostgreSQL | MySQL | 備考 |
|---|---|---|---|
| 固定長 | CHAR(n) CHARACTER(n) |
CHAR(n) CHARACTER(n) |
|
| CHAR | CHAR | ||
| 可変長 | VARCHAR(n) | VARCHAR(n) | |
| TEXT | TEXT *1 |
・MySQLのTINYTEXT、MEDIUMTEXTはPostgreSQLのTEXTに割当てる。 ・MySQLのLONGTEXT(4GB)はPostgreSQLのTEXT(約1GB)で足りるならTEXT、そうでない場合はなんか考える。 ・MySQLのTEXT型にインデックスを設定する場合は長さの指定が必要になる。 *1 |
-- *1
CREATE TABLE fuga_tbl (uho_col TEXT);
CREATE INDEX hoge_idx ON fuga_tbl (uho_col(10));3. 日付/時刻型
| 属性 | PostgreSQL | MySQL | 備考 | ||||
|---|---|---|---|---|---|---|---|
| 日付 | DATE | DATE | |||||
| 日時 | TIMESTAMP | TIMESTAMP DATETIME |
・MySQLのTIMESTAMPは何かと問題が多いので使わない。 ・PostgreSQLのTIMESTAMPはMySQLではDATETIMEだと思っていた方が問題が少ないと思う。 ・MySQLでタイムゾーンを扱うのはなんか面倒くさそう。 |
||||
| 時刻 | TIME | TIME |
・時刻範囲の考え方が違うので注意する。
|
4. ブーリアン型/ビット型
| 属性 | PostgreSQL | MySQL | 備考 |
|---|---|---|---|
| 固定長ビット | BIT(n) | BIT(n) | |
| BIT | BIT | ||
| ブーリアン | BOOLEAN | BOOLEAN |
・PostgreSQLはTRUE/FALSE, 't'/'f', 0/1などで真理値を示す。 ・MySQLはTINYINT(1)と等価なので数値で真理値を示す。(0 / 1) |