PostgreSQL データ型一覧

個人的メモ

公式
https://www.postgresql.jp/docs/9.2/datatype.html

| カテゴリ  | データ型           | 格納サイズ | 範囲                                                         | 用途例                                       |
|----------|-------------------|------------|-------------------------------------------------------------|---------------------------------------------|
| 数値型   | `smallint`        | 2バイト     | -32,768 から +32,767                                          | 小規模なIDやカウンターに適用                 |
| 数値型   | `integer`         | 4バイト     | -2,147,483,648 から +2,147,483,647                            | 一般的な数値計算や中規模のIDに使用           |
| 数値型   | `bigint`          | 8バイト     | -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807    | 大規模なデータベースのIDや大規模な数値計算に使用 |
| 数値型   | `decimal`         | 可変長      | 小数点前までは131072桁、小数点以降は16383桁                    | 金融取引や高精度計算に使用                     |
| 数値型   | `numeric`         | 可変長      | 小数点前までは131072桁、小数点以降は16383桁                    | 同上                                           |
| 数値型   | `real`            | 4バイト     | 6桁精度                                                      | 科学技術計算での近似値計算に使用               |
| 数値型   | `double precision`| 8バイト     | 15桁精度                                                     | 高精度な科学技術計算に使用                     |
| 数値型   | `smallserial`     | 2バイト     | 1から32,767                                                  | 自動生成される小規模な連続IDに使用             |
| 数値型   | `serial`          | 4バイト     | 1から2,147,483,647                                           | 自動生成される中規模の連続IDに使用             |
| 数値型   | `bigserial`       | 8バイト     | 1から9,223,372,036,854,775,807                                | 自動生成される大規模な連続IDに使用             |
| 通貨型   | `money` | 8バイト     | -922,337,203,685,477.5808 から 922,337,203,685,477.5807 | 金融取引の金額や費用の格納に使用     |
| 文字列型 | `character(n), char(n)`  | nバイト          | 固定長n文字 | 固定長のデータ、例えば性別、国コードなど     |
| 文字列型 | `character varying(n), varchar(n)` | 最大nバイト     | 最大n文字   | 可変長データ、例えば名前、住所など           |
| 文字列型 | `text`     | 可変長           | 無制限      | 長いテキストデータ、例えば記事内容、コメント |
| 日付/時刻型 | `timestamp [ (p) ] [ without time zone ]` | 8バイト     | 4713 BCから294276 AD                     | 歴史的または将来のイベントの日時の記録             |
| 日付/時刻型 | `timestamp [ (p) ] with time zone`      | 8バイト     | 4713 BCから294276 AD                     | グローバルで発生するイベントの時間を地域別に記録   |
| 日付/時刻型 | `date`                                 | 4バイト     | 4713 BCから5874897 AD                    | 日付のみが必要な場合（例：生年月日）               |
| 日付/時刻型 | `time [ (p) ] [ without time zone ]`    | 8バイト     | 00:00:00から24:00:00                      | 日々のスケジュールや業務時間の管理                 |
| 日付/時刻型 | `time [ (p) ] with time zone`           | 12バイト    | 00:00:00+1459から24:00:00-1459            | タイムゾーンを考慮した正確な時刻記録               |
| 日付/時刻型 | `interval [ fields ] [ (p) ]`            | 12バイト    | -178000000年から178000000年               | 時間の経過、期間の測定（例：保証期間、契約期間）   |
| 論理型         | `boolean`            | 1バイト              | true/false                                  | フラグ、条件式の結果                    |
| JSON型         | `json`               | 可変長               | 無制限                                      | 設定データ、動的フォームデータ          |
|  JSON型          | `jsonb`              | 可変長               | 無制限                                      | インデックス付きJSONデータ              |
| 幾何データ型 | `point`  | 16バイト       | (x, y)                       | 地図上の特定の位置を表す                          |
| 幾何データ型 | `line`   | 32バイト       | ((x1, y1), (x2, y2))        | 無限に伸びる直線を表現（完全には実装されていない） |
| 幾何データ型 | `lseg`   | 32バイト       | ((x1, y1), (x2, y2))        | 有限の線分を表す                                   |
| 幾何データ型 | `box`    | 32バイト       | ((x1, y1), (x2, y2))        | 矩形を表現するために使用                           |
| 幾何データ型 | `path`   | 16 + 16nバイト | 閉経路：((x1, y1), ...)     | 閉じた多角形のパスを表現する                        |
| 幾何データ型 | `path`   | 16 + 16nバイト | 開経路：[(x1, y1), ...]     | 開いた経路のパスを表現する                         |
| 幾何データ型 | `polygon`| 40 + 16nバイト | ((x1, y1), ...)             | 多角形を表現する                                   |
| 幾何データ型 | `circle` | 24バイト       | <(x, y), r>（中心と半径）   | 円を表現するために使用                             |
| ネットワーク型 | `cidr`    | 7もしくは19バイト | IPv4、およびIPv6ネットワーク | IPアドレスブロックの管理、ネットワーク計画   |
| ネットワーク型 | `inet`    | 7もしくは19バイト | IPv4もしくはIPv6ホスト、およびネットワーク | 個別のIPアドレスおよびそのネットワークマスクの記録 |
| ネットワーク型 | `macaddr` | 6バイト          | MACアドレス                  | ネットワークハードウェアの識別                 |
| ビット列型 | `bit(n)`       | nビット           | 固定長nビット     | フラグ、ビットマスク、固定長ビットデータの格納 |
| ビット列型 | `bit varying(n)` | 最大nビット       | 可変長最大nビット | 可変長のビットデータの格納|
| テキスト検索型 | `tsvector`        | 可変長      | -     | ドキュメントの正規化された単語のリストを格納 |
| テキスト検索型 | `tsquery`         | 可変長      | -     | 検索クエリを表す、正規化された単語と論理演算子の組み合わせ |
| テキスト検索型 | `regconfig`       | 4バイト     | -     | テキスト検索の設定を指定するための型|
| 地理空間型     | `geometry`           | 可変長               | 地理空間データ (PostGIS拡張で利用)            | 地理情報システム(GIS)のデータ管理       |
| UUID型         | `uuid`               | 16バイト             | ユニバーサル一意識別子                         | システム全体で一意なIDの生成            |
| XML型          | `xml`                | 可変長               | XMLデータ                                    | XMLデータの格納と交換                    |
| 列挙型         | `enum`               | 可変長               | 列挙型（指定された入力値のみ許容）             | ステータス、カテゴリ                    |
| 配列型         | `array`              | 可変長               | 同一データ型の要素を持つ可変長配列             | 複数の電話番号、趣味リスト              |
| 範囲型   | `int4range`       | 可変長           | 整数の範囲        | 数値範囲を指定する場合、例えば商品の価格範囲       |
| 範囲型   | `int8range`       | 可変長           | 大きな整数の範囲  | データベースにおける大量の数値データの範囲指定   |
| 範囲型   | `numrange`       | 可変長           | 数値の範囲        | 金融取引における金額の範囲指定                  |
| 範囲型   | `tsrange`         | 可変長           | タイムスタンプの範囲 | 期間を指定するイベントや予約システム            |
| 範囲型   | `tstzrange`       | 可変長           | タイムゾーン付きタイムスタンプの範囲 | グローバルなイベントのスケジュール管理          |
| 範囲型   | `daterange`       | 可変長           | 日付の範囲         | 教育機関における学期や休暇期間の管理            |