Postgres にはユーザのために多くのデータ型を 用意しています。また、CREATE TYPEコマンドを使用する ことにより、Postgresに新しい型を追加する ことも可能です。
Table 3-1では、ユーザが使用可能な一般的なすべての データ型が書かれています。"Aliases"カラムに書かれた名前は Postgres内部で使用されている名前で、それらには 歴史的根拠があります。また、内部的に使用されている、または削除予定の型も 使用可能ですが、このドキュメントには明記されていません。多くの既存型のは 出力形式があります。しかし、オープンパスやクローズパスなどの いくつかの型はPostgres特有のものであったり、 日付データ型やtime型のようにいくつかの形式を持つものもあります。
Table 3-1. データ型
データ型名 | 別名 | 説明 |
---|---|---|
bigint | int8 | 8バイト符号付整数 |
bit | 固定長ビット列 | |
bit varying(n) | varbit(n) | 可変長ビット列 |
boolean | bool | 真偽 |
box | 矩形 '(左下の座標、右上の座標)' | |
character(n) | char(n) | 固定長文字列 |
character varying(n) | varchar(n) | 可変長文字列 |
cidr | IP ネットワークアドレス | |
circle | 円 '(中心点の座標、半径)' | |
date | 日付 (年月日) | |
double precision | float8 | 8バイト浮動小数点 |
inet | IP ホストアドレス | |
integer | int, int4 | 4バイト符号付整数 |
interval | 日付/時刻の差 | |
line | 直線 '(線上の1点、線上のもう1点)' | |
lseg | 線分 '(始点の座標、終点の座標)' | |
macaddr | MAC アドレス | |
money | 米国通貨 | |
numeric(p, s) | decimal(p, s) | 精度の高い整数と小数 |
oid | オブジェクト識別子 | |
path | 経路 '(点1、点2、...)' | |
point | 点 '(x,y)' | |
polygon | 多角形 '(点1...)' | |
real | float4 | 4バイト浮動小数点 |
smallint | int2 | 2バイト符号付整数 |
serial | 4バイト自動増加整数 | |
text | 可変長テキスト (無制限) | |
time [ without time zone ] | 時刻 (時分秒) タイムゾーンなし | |
time with time zone | 時刻 (時分秒) タイムゾーン付き | |
timestamp [ with time zone ] | 日付と時刻 |
適合性: 下記の型はSQLで明記されているものです。 bit, bit varying, boolean, char, character, character varying, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time, timestamp (タイムゾーン付き、なし両方)。
整数や浮動小数点などの基本の型に対応している 多くの出入力関数はエラーチェックを行います。足し算やかけ算などのいくつかの演算子と 関数に関しては、実行速度を早めるために実行される度にエラーチェックは行いません。 したがって、システム/データ型によっては、気がつかないうちにNumeric演算子の アンダーフローやオーバーフローを起こすかも知れません。
入出力関数には交換可能でないものがあります。つまり、 出力関数の結果を入力された最初の入力と比較した場合、 精度が下がる可能性があります。
数値データ型は2/4/8バイトの整数、4/8バイトの浮動小数点、精度の高い整数と小数 で構成されています。
Table 3-2. Numericデータ型
型名 | データベース上のバイト数 | 説明 | 値の範囲 |
---|---|---|---|
smallint | 2バイト | 固定精度 | -32768 から +32767 |
integer | 4バイト | 通常の固定精度 | -2147483648 から +2147483647 |
bigint | 8バイト | 固定精度 | 約18桁 |
decimal | 可変長 | ユーザ指定の精度 | 無制限 |
numeric | 可変長 | ユーザ指定の精度 | 無制限 |
real | 4バイト | 可変精度 | 6桁 |
double precision | 8バイト | 可変精度 | 15桁 |
serial | 4バイト | 識別子またはクロスレファレンス | 0 から +2147483647 |
Numericデータ型の定数の構文はSection 1.1.2で説明されています。 Numericデータ型には多くの数値型で使える演算子と関数があります。詳細は Chapter 4を参照して下さい。
bigintはコンパイラが8バイトの数をサポートしている必要が あるので、すべてのプラットフォームで使用できるとは限りません。
serial型はPostgresによって 作成される特別な型です。テーブル内容に重複しない番号を作成する場合に よく使用されます。現在の実装では、下記のコマンドは
CREATE TABLE tablename (colname SERIAL);はこのコマンドと同等の意味です。
CREATE SEQUENCE tablename_colname_seq; CREATE TABLE tablename (colname integer DEFAULT nextval('tablename_colname_seq')); CREATE UNIQUE INDEX tablename_colname_key on tablename (colname);
Caution |
作成されたシーケンス型のためのシーケンスはテーブルが削除されたときに 自動的には削除されません。 |
CREATE TABLE tablename (colname SERIAL); DROP TABLE tablename; CREATE TABLE tablename (colname SERIAL);DROP SEQUENCEコマンドを実行されるまでシーケンスの実体は データベースに存在し続けます。