★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

第8章 データ型

目次

8.1. 数値データ型
8.1.1. 整数データ型
8.1.2. 任意の精度を持つ数
8.1.3. 浮動小数点データ型
8.1.4. 連番型
8.2. 通貨型
8.3. 文字型
8.4. バイナリ列データ型
8.4.1. byteaのhex書式
8.4.2. byteaのエスケープ書式
8.5. 日付/時刻データ型
8.5.1. 日付/時刻の入力
8.5.2. 日付/時刻の出力
8.5.3. 時間帯
8.5.4. 時間間隔の入力
8.5.5. 時間間隔の出力
8.6. 論理値データ型
8.7. 列挙型
8.7.1. 列挙型の宣言
8.7.2. 順序
8.7.3. 型の安全性
8.7.4. 実装の詳細
8.8. 幾何データ型
8.8.1. 座標点
8.8.2. 直線
8.8.3. 線分
8.8.4. 矩形
8.8.5. 経路
8.8.6. 多角形(ポリゴン)
8.8.7. 円
8.9. ネットワークアドレス型
8.9.1. inet
8.9.2. cidr
8.9.3. inetcidrデータ型の違い
8.9.4. macaddr
8.9.5. macaddr8
8.10. ビット列データ型
8.11. テキスト検索に関する型
8.11.1. tsvector
8.11.2. tsquery
8.12. UUID
8.13. XML
8.13.1. XML値の作成
8.13.2. 符号化方式の取扱い
8.13.3. XML値へのアクセス
8.14. JSONデータ型
8.14.1. JSONの入出力構文
8.14.2. JSONドキュメントの設計
8.14.3. jsonb型用包含演算子と存在演算子
8.14.4. jsonb インデックス
8.14.5. jsonbの添字
8.14.6. 変換
8.14.7. jsonpath型
8.15. 配列
8.15.1. 配列型の宣言
8.15.2. 配列の値の入力
8.15.3. 配列へのアクセス
8.15.4. 配列の変更
8.15.5. 配列内の検索
8.15.6. 配列の入出力構文
8.16. 複合型
8.16.1. 複合型の宣言
8.16.2. 複合型の値の構成
8.16.3. 複合型へのアクセス
8.16.4. 複合型の変更
8.16.5. 問い合わせでの複合型の使用
8.16.6. 複合型の入出力構文
8.17. 範囲型
8.17.1. 組み込みの範囲型と多重範囲型
8.17.2. 例
8.17.3. 閉じた境界と開いた境界
8.17.4. 無限の(境界のない)範囲
8.17.5. 範囲の入出力
8.17.6. 範囲と多重範囲のコンストラクタ
8.17.7. 離散的な範囲型
8.17.8. 新しい範囲型の定義
8.17.9. インデックス
8.17.10. 範囲の制約
8.18. ドメイン型
8.19. オブジェクト識別子データ型
8.20. pg_lsn
8.21. 疑似データ型

PostgreSQLにはユーザが使用可能な豊富なデータ型が始めから備わっています。 CREATE TYPEコマンドでPostgreSQLに対し新しいデータ型を追加できます。

表 8.1に組み込みの汎用データ型をすべて示します。 別名欄に列挙された代替名称のほとんどは、歴史的な理由によりPostgreSQLの内部で使用されている名前です。 他にも、内部で使用されるデータ型、削除予定のデータ型もありますが、ここにはリストされていません。

表8.1 データ型

名称別名説明
bigintint88バイト符号付き整数
bigserialserial8自動増分8バイト整数
bit [ (n) ] 固定長ビット列
bit varying [ (n) ]varbit [ (n) ]可変長ビット列
booleanbool論理値(真/偽)
box 平面上の矩形
bytea バイナリデータ(バイトの配列(byte array)
character [ (n) ]char [ (n) ]固定長文字列
character varying [ (n) ]varchar [ (n) ]可変長文字列
cidr IPv4もしくはIPv6ネットワークアドレス
circle 平面上の円
date 暦の日付(年月日)
double precisionfloat8倍精度浮動小数点(8バイト)
inet IPv4もしくはIPv6ホストアドレス
integerint, int44バイト符号付き整数
interval [ fields ] [ (p) ] 時間間隔
json テキストのJSONデータ
jsonb バイナリ JSON データ, 展開型
line 平面上の無限直線
lseg 平面上の線分
macaddr MAC(Media Access Control)アドレス
macaddr8 MAC (Media Access Control) アドレス (EUI-64 形式)
money 貨幣金額
numeric [ (p, s) ]decimal [ (p, s) ]精度の選択可能な高精度数値
path 平面上の幾何学的経路
pg_lsn PostgreSQLログシーケンス番号
pg_snapshot ユーザレベルのトランザクションIDスナップショット
point 平面上の幾何学的点
polygon 平面上の閉じた幾何学的経路
realfloat4単精度浮動小数点(4バイト)
smallintint22バイト符号付き整数
smallserialserial2自動増分2バイト整数
serialserial4自動増分4バイト整数
text 可変長文字列
time [ (p) ] [ without time zone ] 時刻(時間帯なし)
time [ (p) ] with time zonetimetz時間帯付き時刻
timestamp [ (p) ] [ without time zone ] 日付と時刻(時間帯なし)
timestamp [ (p) ] with time zonetimestamptz時間帯付き日付と時刻
tsquery テキスト検索問い合わせ
tsvector テキスト検索文書
txid_snapshot ユーザレベルのトランザクションIDスナップショット(廃止予定。pg_snapshotを参照)
uuid 汎用一意識別子
xml XMLデータ

互換性

次に挙げるデータ型(あるいはその綴り方)はSQLで規定されています。 bigintbitbit varyingbooleancharcharacter varyingcharactervarchardatedouble precisionintegerintervalnumericdecimalrealsmallinttime(時間帯付き、なしの両方)、 timestamp(時間帯付き、なしの両方)、xml

それぞれのデータ型はそのデータ型の入出力関数で決定される外部表現を保有しています。 組み込みデータ型の多くには、自明の外部書式があります。 とは言っても、経路のようなPostgreSQLに特有な型や、あるいは、日付や時刻データ型のように書式を複数選択できる型がいくつかあります。 一部の入出力関数は可逆ではありません。 つまり、出力関数による結果は元の入力と比較した場合精度を失う可能性があります。