数値データ型

広告

ここでは数値データ型について確認していきます。使用可能な型は下記の通りです。

型名サイズ説明別名
smallint2バイト-32768から+32767の整数int2
integer4バイト-2147483648から+2147483647の整数int, int4
bigint8バイト-9223372036854775808から9223372036854775807の整数int8
decimal[(p, s)]可変長最大1000桁、ユーザ指定精度 
numeric[(p, s)]可変長最大1000桁、ユーザ指定精度decimal
real4バイト6桁精度float4
double precision8バイト15桁精度float8
serial4バイト1から2147483647の自動増分整数serial4
bigserial8バイト1から9223372036854775807の広範囲自動増分整数serial8

整数型は3つあります。通常はinteger型を用います。

numeric型とdecimal型は同じ型で、最大1000桁程度まで数値の格納が可能です。浮動小数点型であるreal型やdouble precision型と異なり誤差が生じませんので厳密な計算が必要で巨大な数値を扱うには便利ですが、非常に処理が重いようですので使う場合には気を付ける必要があります。

また精度を指定することが出来ます。精度の指定は(全体の桁数、小数点以下の桁数)の形での指定となります。例えば(10,4)と指定した場合には「123456.7891」のように全体で10桁、小数点以下で4桁までが有効となります。小数点以下を省略した場合は小数点以下が0(つまり整数)となります。

浮動小数点型にはreal型とdouble precision型があります。real型の場合で「-1E+37から+1E+37」、double precision型の場合で「-1E+308から+1E+308」の範囲の値を格納します。浮動小数点型の場合は常に正確な値が格納されるとは限りませんので、浮動小数点型での値の比較などには注意が必要です。

連番型にはserial型とbigserial型があります。連番型とはMySQLで言うところの「AUTO_INCREMENT」を指定した場合と同じく自動的に連番の数字が格納される型です。元になる値はinteger型です。連番型ではありますが、同じ値を格納も可能となっているため、必要であればUNIQUE制約またはPRIMARY KEY制約を追加します。

連番型と同等の効果を得ることが出来るシーケンス(SEQUENCE)というものがあります。これは別のページで確認します。

( Written by Tatsuo Ikura )