このページは、RDBMSのデータ型の違いについてまとめる予定のページです。
目次
注意
- このページを作ったひとが自分のために記載しているため網羅性はありません。
- 大文字小文字表記は各製品のドキュメントに準じています。(実際にはどちらの表記でも構いません)
一覧
整数
1バイト整数 (TINYINT)
RDBMS |
例 |
MySQL |
TINYINT |
PostgreSQL |
なし |
Oracle |
なし |
SQL Server |
tinyint |
SQLite |
なし (TINYINT はINTEGER のエイリアス) |
2バイト整数 (SMALLINT)
RDBMS |
例 |
MySQL |
SMALLINT |
PostgreSQL |
smallint , int2 |
Oracle |
なし (SMALLINT はNUMBER(38) のエイリアス) |
SQL Server |
smallint |
SQLite |
なし (TINYINT はINTEGER のエイリアス) |
4バイト整数 (INTEGER)
RDBMS |
例 |
MySQL |
INTEGER , INT |
PostgreSQL |
integer , int , int4 |
Oracle |
なし (INTEGER , INT はNUMBER(38) のエイリアス) |
SQL Server |
integer , int |
SQLite |
なし (INTEGER , INT は値に応じて8バイトの範囲まで格納される) |
8バイト整数 (BIGINT)
RDBMS |
例 |
MySQL |
BIGINT |
PostgreSQL |
bigint , int8 |
Oracle |
なし (NUMBER(19) などにする) |
SQL Server |
bigint |
SQLite |
INTEGER が 8バイトまで対応できる。BIGINT も使用可 (INTEGER になる) |
符号なし整数 (UNSIGNED)
RDBMS |
例 |
MySQL |
UNSIGNED (INTEGER UNSIGNED など) |
PostgreSQL |
なし (CHECK 制約を付与する) |
Oracle |
〃 |
SQL Server |
〃 |
SQLite |
〃 |
真数
RDBMS |
例 |
MySQL |
NUMERIC(p, s) , DECIMAL(p, s) |
PostgreSQL |
numeric(p, s) , decimal(p, s) |
Oracle |
NUMBER(p, s) , NUMERIC(p, s) , DECIMAL(p, s) |
SQL Server |
numeric(p, s) , decimal(p, s) |
SQLite |
なし (NUMERIC(p, s) は指定できるが精度指定は無視される) |
概数
4バイト単精度 (REAL)
RDBMS |
例 |
MySQL |
FLOAT , REAL (REAL_AS_FLOAT 有効時) |
PostgreSQL |
real , float(1) ~float(24) |
Oracle |
FLOAT(63) |
SQL Server |
REAL , FLOAT(1) ~FLOAT(24) |
SQLite |
なし (REAL が8バイトまで対応) |
8バイト倍精度 (DOUBLE PRECISION)
RDBMS |
例 |
MySQL |
DOUBLE PRECISION , DOUBLE , REAL (REAL_AS_FLOAT 無効時) |
PostgreSQL |
double precision , float(25) ~float(53) |
Oracle |
FLOAT(126) |
SQL Server |
DOUBLE PRECISION , FLOAT(25) ~FLOAT(53) |
SQLite |
REAL が8バイトまで対応。DOUBLE PRECISION , DOUBLE , FLOAT |
可変文字列
RDBMS |
例 |
MySQL |
VARCHAR(n) , CHARACTER VARYING(n) (n = 文字数) |
PostgreSQL |
varchar(n) , character varying(n) (n = 文字数) |
Oracle |
VARCHAR2(n) (CHARACTER VARYING(n) , VARCHAR2(n BYTE) , VARCHAR2(n CHAR) ), NVARCHAR2(n) (n = VARCHAR2(n) CHARACTER VARYING(n) VARCHAR2(n BYTE) の場合バイト、その他は文字数) |
SQL Server |
varchar(n) (n = バイト数), nvarchar(n) (n = バイトペア数) |
SQLite |
TEXT (VARCHAR(n) も使用可。桁数指定は無視される) |
日付
RDBMS |
例 |
MySQL |
DATE |
PostgreSQL |
date |
Oracle |
DATE (時刻も扱う) |
SQL Server |
date |
SQLite |
なし (DATE などは指定できるが数値や文字列を格納できる) |
日時
RDBMS |
例 |
MySQL |
DATETIME , TIMESTAMP |
PostgreSQL |
timestamp (timestamp without time zone ), timestamp with time zone |
Oracle |
TIMESTAMP , TIMESTAMP WITH TIME ZONE , TIMESTAMP WITH LOCAL TIME ZONE |
SQL Server |
datetime2 , datetimeoffset |
SQLite |
なし |
- 補足
- 推奨されていない型は掲載していません。(SQL Serverの
smalldatetime
など)
- MySQLの
TIMESTAMP
は他の製品や標準SQLの型と挙動が異なります (範囲が1970-01-01 00:00:01~2038-01-19 03:14:07など)
可変長バイナリ (BLOB)
RDBMS |
例 |
MySQL |
BLOB |
PostgreSQL |
bytea |
Oracle |
BLOB |
SQL Server |
varbinary(max) |
SQLite |
BLOB |
JSON
RDBMS |
例 |
MySQL |
JSON |
PostgreSQL |
json , jsonb |
Oracle |
JSON (21c~) |
SQL Server |
なし (nvarchar などに保存可能) |
SQLite |
なし (TEXT に保存可能) |
参考