サーチ…


前書き

PostgreSQLには、ユーザが利用できる豊富なネイティブデータ型があります。ユーザーは、CREATE TYPEコマンドを使用してPostgreSQLに新しいタイプを追加できます。

https://www.postgresql.org/docs/9.6/static/datatype.html

数値タイプ

ストレージサイズ説明範囲
smallint 2バイト小領域整数 -32768〜+32767
integer 4バイト整数のためのypicalの選択 -2147483648〜+2147483647
bigint 8バイト広域整数 -9223372036854775808〜+9223372036854775807
decimal 変数ユーザー指定の精度、正確小数点の前に最大131072桁。小数点以下16383桁まで
numeric 変数ユーザー指定の精度、正確小数点の前に最大131072桁。小数点以下16383桁まで
real 4バイト可変精度、不正確 10進数の6桁の精度
double precision 8バイト可変精度、不正確小数点以下15桁の精度
smallserial 2バイト小さな自動インクリメント整数 1〜32767
serial 4バイト自動インクリメント整数 1〜2147483647
bigserial 8バイト大きな自動インクリメント整数 1〜9223372036854775807
int4range 整数の範囲
int8range 範囲のbigint
numrange 数値の範囲

日付/時刻タイプ

ストレージサイズ説明低い価値高い価値解決
timestamp (タイムゾーンなし) 8バイト日付と時刻の両方(タイムゾーンなし) 紀元前4713年 294276 AD 1マイクロ秒/ 14桁
timestamp (タイムゾーン付き) 8バイト日付と時刻の両方、タイムゾーン付き紀元前4713年 294276 AD 1マイクロ秒/ 14桁
date 4バイト日付(時刻なし) 紀元前4713年 5874897 AD 1日
time (タイムゾーンなし) 8バイト時間帯(日付なし) 00:00:00 24:00:00 1マイクロ秒/ 14桁
time (時間帯あり) 12バイト時刻帯のみ 00:00:00 + 1459 24:00:00-1459 1マイクロ秒/ 14桁
interval 16バイト時間間隔 -17800万年 17800万年 1マイクロ秒/ 14桁
tsrange タイムゾーンなしのタイムスタンプの範囲
tstzrange タイムゾーン付きのタイムスタンプの範囲
daterange 日付の範囲

幾何学タイプ

ストレージサイズ説明表現
point 16バイト平面上の点 (x、y)
line 32バイト無限ライン {A、B、C}
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ネットワーク
inet 7または19バイト IPv4とIPv6のホストとネットワーク
macaddr 6バイト MACアドレス

文字の種類

説明
character varying(n)varchar(n) 可変長可変
character(n)char(n) 固定長、ブランク
text 可変長無制限

配列

PostgreSQLでは、組み込み型、ユーザ定義型、または列挙型の配列を作成できます。デフォルトでは、配列には制限はありませんが、指定することはできます。

配列の宣言

SELECT integer[];
SELECT integer[3];
SELECT integer[][];
SELECT integer[3][3];
SELECT integer ARRAY;
SELECT integer ARRAY[3];

配列の作成

SELECT '{0,1,2}';
SELECT '{{0,1},{1,2}}';
SELECT ARRAY[0,1,2];
SELECT ARRAY[ARRAY[0,1],ARRAY[1,2]];

配列へのアクセス

デフォルトでは、PostgreSQLは配列にarray[1]から始まる番号付け規則を使います。つまり、n要素の配列はarray[1]で始まり、 array[n]終わります。

--accesing a spefific element
WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT int_arr[1] FROM arr;

int_arr
---------
        0
(1 row)

--sclicing an array
WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT int_arr[1:2] FROM arr;

int_arr
---------
    {0,1}
(1 row)

配列に関する情報の取得

--array dimensions (as text)
with arr as (select ARRAY[0,1,2] int_arr) select array_dims(int_arr) from arr;

array_dims
------------
       [1:3]
(1 row)

--length of an array dimension
 WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT array_length(int_arr,1) FROM arr;

 array_length
 --------------
              3
 (1 row)

--total number of elements across all dimensions
 WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT cardinality(int_arr) FROM arr;
 
 cardinality
 -------------
             3
 (1 row)

配列関数

追加されます



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow