追補: SQLデータ型の一覧

基本的なデータ型とその使い方については、p.45からp.48をご覧ください。

*1 はSQL99で標準化されたものです。[ ] は省略可能です。

数値

MySQLでは符号なし整数 int unsigned をよく使うが、PostgreSQLにはない。

MySQLでは主キーの値を自動生成するためにauto_incrementを付加するが、PostgreSQLではserial型を使う。RDBMSごとのSQLの差異については、Comparison of different SQL implementations が詳しい。(2006.7.24追加。)

標準SQL MySQL PostgreSQL
正式名 別名 正式名 別名 正式名 別名
SMALLINT SMALLINT [(精度)] [UNSIGNED] [ZEROFILL] SMALLINT INT2
INTEGER INT INTEGER [(精度)] [UNSIGNED] [ZEROFILL] INT [(精度)] [UNSIGNED] [ZEROFILL] INTEGER INT, INT4
FLOAT [(精度)] FLOAT (精度) [UNSIGNED] [ZEROFILL] FLOAT [(精度, 位取り)] [UNSIGNED] [ZEROFILL]
DOUBLE PRECISION DOUBLE PRECISION [(精度, 位取り)] [UNSIGNED] [ZEROFILL] DOUBLE PRECISION FLOAT8
REAL REAL [(精度, 位取り)] [UNSIGNED] [ZEROFILL] DOUBLE [(精度, 位取り)] [UNSIGNED] [ZEROFILL] REAL FLOAT4
DECIMAL [(精度 [, 位取り])] DEC [(精度 [, 位取り])] DECIMAL [(精度 [, 位取り])] [UNSIGNED] [ZEROFILL] DEC [(精度 [, 位取り])] [UNSIGNED] [ZEROFILL] DECIMAL [(精度, 位取り)]
NUMERIC [(精度 [, 位取り])] NUMERIC [(精度 [, 位取り])] [UNSIGNED] [ZEROFILL] NUMERIC [(精度, 位取り)]
TINYINT [(長さ)] [UNSIGNED] [ZEROFILL]
MEDIUMINT [(長さ)] [UNSIGNED] [ZEROFILL]
BIGINT [(長さ)] [UNSIGNED] [ZEROFILL] BIGINT INT8

文字列

標準SQL MySQL PostgreSQL
正式名 別名 正式名 別名 正式名 別名
CHARACTER [(長さ)] CHAR [(長さ)] CHAR [(長さ)] [BINARY] CHARACTER (長さ) CHAR (長さ)
NATIONAL CHARACTER [(長さ)] NATIONAL CHAR [(長さ)], NCHAR [(長さ)] NATIONAL CHAR (長さ) [BINARY]
CHARACTER VARYING (長さ) CHAR VARYING (長さ),VARCHAR (長さ) VARCHAR (長さ) [BINARY] CHARACTER VARYING (長さ) VARCHAR (長さ)
NATIONAL CHARACTER VARYING (長さ) NATIONAL CHAR VARYING (長さ), NCHAR VARYING (長さ) NATIONAL VARCHAR (長さ) [BINARY]
CHARACTER LARGE OBJECT *1 CLOB *1 TEXT TEXT
TINYTEXT
MEDIUMTEXT
LONGTEXT

日時データ型

標準SQL MySQL PostgreSQL
正式名 別名 正式名 別名 正式名 別名
DATE DATE DATE
TIMESTAMP [(精度)] [WITH TIME ZONE] TIMESTAMP [(精度)] TIMESTAMP [(精度)] [WITH TIME ZONE] TIMESTAMPTZ
TIME [(精度)] [WITH TIME ZONE] TIME TIME [(精度)] WITH TIME ZONE TIMETZ
DATETIME
YEAR [(2 | 4)]
TIMESTAMP [(精度)] WITHOUT TIME ZONE TIMESTAMP
TIME [(精度)] [WITHOUT TIME ZONE]

時間隔データ型

標準SQL MySQL PostgreSQL
正式名 別名 正式名 別名 正式名 別名
INTERVAL 時間隔修飾子 INTERVAL (精度)

バイナリ型

標準SQL MySQL PostgreSQL
正式名 別名 正式名 別名 正式名 別名
BINARY LARGE OBJECT *1 BLOB *1 BLOB
TINYLOB
MEDIUMBLOB
LONGBLOB
BYTEA

ビット列

標準SQL MySQL PostgreSQL
正式名 別名 正式名 別名 正式名 別名
BIT [(長さ)] BIT BIT
BIT VARYING (長さ) BIT VARYING (長さ) VARBIT (長さ)

ブール型

標準SQL MySQL PostgreSQL
正式名 別名 正式名 別名 正式名 別名
BOOLEAN *1 BOOL BOOLEAN BOOL

その他

標準SQL MySQL PostgreSQL
正式名 別名 正式名 別名 正式名 別名
ENUM ('値1', '値2', ...)
SET ('値1', '値2', ...)
BOX
CIDR
CIRCLE
INET
LINE
LSEG
MACADDR
MONEY
PATH
POINT
POLYGON
SERIAL SERIAL4
BIGSERIAL SERIAL8