目次
PostgreSQLにはユーザが使用可能な豊富なデータ型が始めから備わっています。 CREATE TYPEコマンドでPostgreSQLに対し新しいデータ型を追加できます。
表 8.1に組み込みの汎用データ型をすべて示します。 「別名」欄に列挙された代替名称のほとんどは、歴史的な理由によりPostgreSQLの内部で使用されている名前です。 他にも、内部で使用されるデータ型、削除予定のデータ型もありますが、ここにはリストされていません。
表8.1 データ型
| 名称 | 別名 | 説明 | 
|---|---|---|
| bigint | int8 | 8バイト符号付き整数 | 
| bigserial | serial8 | 自動増分8バイト整数 | 
| bit [ ( | 固定長ビット列 | |
| bit varying [ ( | 可変長ビット列[ ( n) ] | |
| boolean | bool | 論理値(真/偽) | 
| box | 平面上の矩形 | |
| bytea | バイナリデータ(「バイトの配列(byte array)」) | |
| character [ ( | char [ ( | 固定長文字列 | 
| character varying [ ( | varchar [ ( | 可変長文字列 | 
| cidr | IPv4もしくはIPv6ネットワークアドレス | |
| circle | 平面上の円 | |
| date | 暦の日付(年月日) | |
| double precision | float8 | 倍精度浮動小数点(8バイト) | 
| inet | IPv4もしくはIPv6ホストアドレス | |
| integer | int,int4 | 4バイト符号付き整数 | 
| interval [  | 時間間隔 | |
| json | テキストのJSONデータ | |
| jsonb | バイナリ JSON データ, 展開型 | |
| line | 平面上の無限直線 | |
| lseg | 平面上の線分 | |
| macaddr | MAC(Media Access Control)アドレス | |
| macaddr8 | MAC (Media Access Control) アドレス (EUI-64 形式) | |
| money | 貨幣金額 | |
| numeric [ ( | decimal [ ( | 精度の選択可能な高精度数値 | 
| path | 平面上の幾何学的経路 | |
| pg_lsn | PostgreSQLログシーケンス番号 | |
| point | 平面上の幾何学的点 | |
| polygon | 平面上の閉じた幾何学的経路 | |
| real | float4 | 単精度浮動小数点(4バイト) | 
| smallint | int2 | 2バイト符号付き整数 | 
| smallserial | serial2 | 自動増分2バイト整数 | 
| serial | serial4 | 自動増分4バイト整数 | 
| text | 可変長文字列 | |
| time [ ( | 時刻(時間帯なし) | |
| time [ ( | timetz | 時間帯付き時刻 | 
| timestamp [ ( | 日付と時刻(時間帯なし) | |
| timestamp [ ( | timestamptz | 時間帯付き日付と時刻 | 
| tsquery | テキスト検索問い合わせ | |
| tsvector | テキスト検索文書 | |
| txid_snapshot | ユーザレベルのトランザクションIDスナップショット | |
| uuid | 汎用一意識別子 | |
| xml | XMLデータ | 
次に挙げるデータ型(あるいはその綴り方)はSQLで規定されています。
bigint、bit、bit varying、boolean、char、
character varying、character、varchar、
date、double precision、integer、
interval、numeric、decimal、real、
smallint、time(時間帯付き、なしの両方)、
timestamp(時間帯付き、なしの両方)、xml。
   
それぞれのデータ型はそのデータ型の入出力関数で決定される外部表現を保有しています。 組み込みデータ型の多くには、自明の外部書式があります。 とは言っても、経路のようなPostgreSQLに特有な型や、あるいは、日付や時刻データ型のように書式を複数選択できる型がいくつかあります。 一部の入出力関数は可逆ではありません。 つまり、出力関数による結果は元の入力と比較した場合精度を失う可能性があります。