SYSTEM238 / NOTES1 / データベース / PostgreSQLのデータ型

NOTES1 PROG1
PostgreSQLのデータ型
PostgreSQLのデータ型をまとめたノート。対象バージョンはMySQL8.1.x以降です。

対象バージョンはMySQL8.1.x以降です。

主なデータ型だけ記述してます。
(個人的に)あまり使わない幾何データ型やバイナリ型などは省略しています。

数値型

最小値 最大値 サイズ
SMALLINT -32768 32767 2Byte
INTEGER -2147483648 2147483647 4Byte
BIGINT -9223372036854775808 9223372036854775807 8Byte
DECIMAL(precision[,scale]) *1 *2 NUMERIC(precision[,scale]) -- -- --
REAL -1E+37 1E+37 4Byte
DOUBLE PRECISION -1E+308 1E+308 8Byte
SMALLSERIAL *3
SERIAL2
1 32767 2Byte
SERIAL *3
SERIAL4
1 2147483647 4Byte
BIGSERIAL *3
SERIAL8
1 9223372036854775807 8Byte

*1 precision:精度、scale位取り 例)1234.56 → 精度6、位取り2
*2 scale省略時は0
*3 自動的に増分値を設定する。(正確にはデータ型ではなく列に一意値を設定する簡便な表記法)

SERIALは内部的に下記の様なテーブル定義になっている。

[これが]
CREATE TABLE hoge_tbl (
    fuga_col SERIAL
);

[こうなる]
CREATE SEQUENCE hoge_tbl_fuga_col_seq;
CREATE TABLE hoge_tbl (
    fuga_col integer NOT NULL DEFAULT nextval('hoge_tbl_fuga_col_seq')
);
ALTER SEQUENCE hoge_tbl_fuga_col_seq OWNED BY hoge_tbl.fuga_col;

* UNIQUE/PRIMARY KEY制約は設定されていないので重複値が登録される可能性がある!!
  (Ver7.3以前ではUNIQUEだったのでVerUp時は注意する事)

文字列型

説明
CHAR(n)
CHARACTER(n)
固定長文字列。
格納される文字が指定サイズより小さい場合は右側スがペース埋めされる。
CHAR CHAR(1)と等価
TEXT 可変長文字列。
ほぼ制限無く文字列を格納できる。(最大 約1GB)
VARCHAR(n) 可変長文字列。
TEXT型 + 文字列長チェックと同じ。

日付/時刻型

属性 説明 サイズ
DATE 日付 範囲:
 BC4713 ~ AD32767
入力形式:
 'YYYY-MM-DD', 'YYYYMMDD', 'YYMMDD' *1
4Byte
TIMESTAMP[(p)] *2
  [without time zone]
日時 範囲:
 BC4713 ~ AD294276
入力形式:
 'YYYY-MM-DD HH:MM:SS',
 'YYYYMMDD HH:MM:SS', 'YYMMDD HH:MM:SS' *1
8Byte
TIMESTAMP[(p)] *2
  with time zone
日時 タイムゾーン付き日時 8Byte
TIME[(p)] *2
  [without time zone]
時刻 範囲:
 '00:00:00.00' ~ '23:59:59.99'
入力形式:
 'HH:MM:SS.99', 'HH:MM:SS', 'HHMMSS', 'HH:MM'
8Byte
TIME[(p)] *2
  with time zone
時刻 タイムゾーン付き時刻 12Byte
interval[(p)] *2 日時の差 範囲:
 -178000000年 ~ 178000000
入力形式:
 ...マニュアル参照
12Byte

*1 '-'は'/'でもオッケー。
*2 (p)は秒の小数点以下の桁数

ブーリアン型

説明
BOOLEAN 真理値
 TRUE / FALSE / NULL
 't' / 'f', 'true' / 'false'
 'y' / 'n', 'yes' / 'no'
 '1' / '0'

ビット型

説明
BIT(n) n bitの固定長bit列
BIT BIT(1)と等価
VAR BIT(n) 最大n bitの可変長bit列

参考

PostgreSQL全機能バイブル

ちょっとした事はググって対応できますが、もうちょっと踏み込んだところの情報は本書以上にまとまっているものは無いと思います。

PostgreSQLのリファレンス本はこの本を入手しておけば間違いないと思います。お薦めです!!