PostgreSQL データ型

文字列型

  • char(n), character(n) 文字数の上限を指定した固定長の文字列
  • varchar(n), character varying(n) 文字数の上限を指定した可変長の文字列
  • text 可変長の文字列

格納しようとした値の文字数が文字数制限のある型の指定以上の場合はエラーになる。
制限を超えている文字が半角空白文字のみの場合は、指定文字数まで自動で切り詰められて格納される。
上限文字数を設定しないVARCHAR・TEXT型に格納できるデータサイズは1GBまで。

数値型

  • 整数データ型
    • smallint 2バイト
    • integer, int 4バイト
    • bigint 8バイト
  • 任意の精度を持つ数
    • numeric, decimal 最大1000桁
  • 浮動小数点データ型
    • real 4バイト 6桁精度
    • double precision 8バイト 15桁精度
  • 連番型
    • smallserial 2バイト
    • serial 4バイト
    • bigserial 8バイト
連番型(serial)
  • ユーザがデータ型の範囲内で任意の値を設定できる 。
  • カラムを作成すると、シーケンスも同時に作成される。
  • NULLを挿入できない 。
  • 連番型のカラムを作成すると、シーケンスは正の値をとる 。

日付/時刻型

  • date 日付
  • time 時刻
  • timestamp 日付と時刻

BOOLEAN型

  • 値に文字列の「on」「off」を設定することができる 。
  • 値に文字列またはキーワードの「TRUE」「FALSE」を設定することができる 。
  • 数値の 0 と 1 は使えない。

バイナリ列データ型

https://www.postgresql.jp/document/11/html/datatype-binary.html

  • BYTEA 可変長のバイナリ列

ドメイン

https://www.postgresql.jp/document/11/html/domains.html
https://www.postgresql.jp/document/11/html/sql-alterdomain.html
https://www.postgresql.jp/document/11/html/sql-dropdomain.html

複数のテーブルにおいて、同じ制約条件(NULL/NOT NULL/CHECK制約のみ)を持つデータ型を使用したい場合に、独自のデータ型を定義することができる。

ラージオブジェクト

https://www.postgresql.jp/document/11/html/largeobjects.html

ラージオブジェクトという巨大なバイナリ・テキストデータを格納できる機能がある。
格納先はシステムカタログの「pg_largeobject」テーブルとなり、ユーザテーブルに格納されたOIDによって紐づけられる。
ラージオブジェクトを格納すると、そのOIDが返される。
ラージオブジェクトの格納・取得は、\lo_import、\lo_exportコマンドで行う。

配列型

https://www.postgresql.jp/document/11/html/arrays.html

配列型は全てのデータ型に使用することができる。
配列型「name」の1番目の要素を指定する場合は、name[1]と指定する。

キャスト

  • データ::変換後のデータ型
  • CAST ( データ AS 変換後のデータ型 )