RDBMS のデータ型の比較

このページは、RDBMS のデータ型の違いについてまとめる予定のページです。

目次

注意

  • このページを作ったひとが自分のために記載しているため網羅性はありません。
  • 大文字小文字表記は各製品のドキュメントに準じています。(実際にはどちらの表記でも構いません)

一覧

整数

1バイト整数 (TINYINT)

RDBMS
MySQL TINYINT
PostgreSQL なし
Oracle なし
SQL Server tinyint
SQLite なし (TINYINTINTEGER のエイリアス)

2バイト整数 (SMALLINT)

RDBMS
MySQL SMALLINT
PostgreSQL smallint, int2
Oracle なし (SMALLINTNUMBER(38) のエイリアス)
SQL Server smallint
SQLite なし (TINYINTINTEGER のエイリアス)

4バイト整数 (INTEGER)

RDBMS
MySQL INTEGER, INT
PostgreSQL integer, int, int4
Oracle なし (INTEGER, INTNUMBER(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
CHECK 制約を付与する例
CREATE TABLE table1 (
  col1 INTEGER CHECK (col1 >= 0)
)

数値 (精度指定)

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) は指定できるが精度指定は無視される)

可変文字列

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), nvarchar(n) (n = バイト数)
SQLite TEXT (VARCHAR(n) も使用可。桁数指定は無視される)

日付

RDBMS
MySQL DATE
PostgreSQL date
Oracle DATE
SQL Server date
SQLite なし (DATE などは指定できるが数値や文字列を格納できる)
  • 補足
    • Oracle の DATE は時刻も扱う型です。

日時

RDBMS
MySQL DATETIME, TIMESTAMP
PostgreSQL timestamp (timestamp without timezone), timestamp with timezone
Oracle TIMESTAMP, TIMESTAMP WITH TIMEZONE, 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 など)

参考