PostgreSQL データ型: バイト、数値、文字、バイナリ
PostgreSQL ユーザーに豊富なネイティブ データ型を提供します。ユーザーは CREATE TYPE コマンドを使用して新しい型を追加できます。また、クエリがよりシンプルで読みやすくなります。
データ型 PostgreSQL
PostgreSQL 次のデータ型をサポートします:
- テキストの種類
- 数値型
- 日付と時刻
- XML
- JSONの
- ブーリアン
- ビット
- バイナリデータ
- ネットワーク
- 配列
- データ型を作成する
- ブーリアン
- 一時的な
- UUID
- 配列
- JSONの
- ネットワーク アドレスと幾何学的データを保存するための特別なデータ タイプ。
勉強しましょう PostgreSQL データ型の詳細
文字データ型
PostgreSQL テキスト値を格納するための文字データ型をサポートします。 PostgreSQL 同じ内部構造から文字データ型を構築します。 PostgreSQL では、CHAR(n)、VARCHAR(n)、TEXT の 3 つの文字データ型が提供されます。
お名前 | 説明 |
---|---|
varchar(n) | 制限付きの可変長を宣言できます |
文字(n) | 固定長、空白埋め込み |
テキスト | このデータ型を使用して、長さ無制限の変数を宣言できます |
数値データ型
PostgreSQL 2 つの異なるタイプの数値をサポートします。
- 整数
- 浮動小数点数
お名前 | 店舗規模 | レンジ |
---|---|---|
小さい整数 | 2バイト | + 32768ツー32767 |
整数 | 4バイト | + 2147483648ツー2147483647 |
bigint | 8バイト | -9223372036854775808~9223372036854775807 |
10進数 | 変数 | 131072 進数として宣言した場合、データ型の範囲は小数点前 16383 桁から小数点後 XNUMX 桁になります。 |
数値の | 変数 | 数値として宣言する場合は、小数点前131072桁から小数点以下16383桁までの数値を含めることができます。 |
リアル | 4バイト | 6 進数 XNUMX 桁の精度 |
8バイト | 15 進数 XNUMX 桁の精度 |
バイナリデータ型
バイナリ文字列は、オクテットまたはバイトのシーケンスです。 バイナリ Postgres データ型は XNUMX つの方法に分類されます。
- バイナリ文字列により、値ゼロのオッズを保存できます
- 印刷不可能なオクテット
文字列ではゼロ オクテットは許可されず、データベースの文字セット エンコード規則に従って無効なその他のオクテット値やシーケンスも許可されません。
お名前 | ストレージサイズ | 説明 |
---|---|---|
バイト | 1 ~ 4 バイトにバイナリ文字列のサイズを加えたもの | 可変長バイナリ文字列 |
ネットワークアドレスの種類
多くのアプリケーションは、ユーザーやセンサーの IP アドレスなどのネットワーク情報を保存します。 PostgreSQL には、ネットワーク データの最適化に役立つ XNUMX つのネイティブ タイプがあります。
お名前 | サイズ | 説明 |
---|---|---|
サイダー | 7または19バイト | IPV4とIPv6 ネットワーク |
INET | 7または19バイト | IPV4 および IPV5 のホストとネットワーク |
マカドル | 6バイト | MACアドレス |
ネットワークアドレスタイプを使用すると、次のような利点があります。
- ストレージスペースの節約
- 入力エラーチェック
- サブネットによるデータ検索などの機能
テキスト検索タイプ
PostgreSQL 全文検索をサポートするために設計された 2 つのデータ型を提供します。全文検索は、自然言語ドキュメントのコレクションを検索して、クエリに最も一致するものを検索します。
- Tsvector テキスト検索 PostgreSQL 変数タイプは、テキスト検索に最適化された形式でドキュメントを表します。
- クエリ型テキスト検索は、検索する必要のあるキーワードを保存します。
日付/時刻データ型
PostgreSQL timestamp は秒精度ではなくマイクロ秒精度を提供します。さらに、タイムゾーンありまたはなしで保存するオプションもあります。 PostgreSQL 入力時にタイムゾーン付きのタイムスタンプを UTC に変換して保存します。
日付と時刻の入力は、従来の Postgres、ISO 8601、SQL 互換など、さまざまな形式で受け入れられます。
PostgreSQL 日/月/年の順序をサポートします。サポートされている形式は DMY、MDY、YMD です
時間データ型
お名前 | サイズ | レンジ | 解像度 |
---|---|---|---|
タイムゾーンのないタイムスタンプ | 8バイト | 紀元前 4713 年から西暦 294276 年まで | 1マイクロ秒/14桁 |
タイムゾーン付きのタイムスタンプ | 8バイト | 紀元前 4713 年から西暦 294276 年まで | 1マイクロ秒/14桁 |
date | 4バイト | 紀元前 4713 年から西暦 294276 年まで | ある日 |
タイムゾーンのない時間 | 8バイト | 00:00:00 to 24:00:00 | 1マイクロ秒/14桁 |
タイムゾーン付きの時間 | 12バイト | 00:00:00 + 1459 ~ 24:00:00-1459 | 1マイクロ秒/14桁 |
インターバル | 12バイト | -178000000 ~ 178000000 年 | 1マイクロ秒/14桁 |
例
入力 | 説明 |
---|---|
2025-09-07 | ISO 8601、任意の日付形式の 7 月 XNUMX 日 (推奨形式) |
2025 年 9 月 7 日 | 7 月 XNUMX 日 (任意の日付スタイル) |
9/7/2025 | 7 月 9 日は MDY、XNUMX 月 XNUMX 日は DMY |
9/7/25 | 7 年 2025 月 XNUMX 日、MDY との |
2025-Sep-7 | 7 月 XNUMX 日 (任意の日付スタイル) |
7年2018月XNUMX日 | 7 月 XNUMX 日 (任意の日付スタイル) |
7-Sep-25 | 7 年 2025 月 XNUMX 日、YMD と |
20250907 | ISO 8601,7 Sep 20225 (任意のモード) |
2025.250 | 年と日付、この場合は 7 年 2025 月 XNUMX 日 |
J25250 | ユリウス日 |
時刻/タイムゾーン入力付き時刻
入力 | 説明 |
---|---|
11:19:38.507 11:19:38 11:19 111938 |
ISO 8601 |
11:19 | 11時19分と同じ |
11:19 PM | 23:19と同じ |
23:19-3 23:19-03:00 231900-03 |
ISO 8601、東部標準時午後 11 時 19 分と同じ |
23:19 EST | タイムゾーンはESTとして指定されており、午後11時19分(EST)と同じです |
ブール型
ブール データ型は次の値を保持できます。
- ◯
- ×
- ヌル
値。
あなたは ブール or boolean キーワードを使用して、ブール データ型の列を宣言します。
ブール値列に値を挿入すると、Postgre は値を次のように変換します。
- Yes
- y
- 1
- t
- true
1に。
次のような価値観がある一方で、
- いいえ
- N
- 0
- F
- ×
0に変換される
データの選択中に、値は再びyes、true、yなどに変換されます。
幾何学的データ型
ジオメトリ データ型は 2 次元の空間オブジェクトを表します。回転、拡大縮小、変換などの操作を実行するのに役立ちます。
お名前 | ストレージサイズ - | 表現 | 説明 |
---|---|---|---|
ポイント | 16バイト | 平面上の点 | (x、y) |
LINE | 32バイト | 無限線 | ((xl.yl ).(x2.y2)) |
ルセグ | 32バイト | 有限の線分 | ((xl.yl ).(x2.y2)) |
Box | 32バイト | 長方形の Box | ((xl.yl ).(x2.y2)) |
パス | 16n + 16n バイト | パスを閉じて開く | ((xl.yl),…) |
ポリゴン | 40 + 16n バイト | ポリゴン | [(xl.yl)….] |
サークル | 24バイト | サークル | <(xy).r> (中心点と半径) |
列挙型
列挙 PostgreSQL データ型は、国コードや支店 ID など、めったに変更されない情報を表すのに役立ちます。列挙型データ型は、データの整合性を確保するために外部キーを使用してテーブルで表されます。
例
髪の色は人口統計データベースではかなり静的です
CREATE TYPE hair_color AS ENUM ('brown','black','red','grey','blond')
範囲タイプ
多くのビジネス アプリケーションでは、範囲内のデータが必要です。 通常、範囲を処理するために XNUMX つの列 (例: 開始日、終了日) が定義されます。 これは非効率的であり、維持するのも困難です。
Postgres は次のような範囲型を構築しました
- int4range — 整数の表示範囲
- int8range — bigint の表示範囲
- numrange — 数値範囲を表示します
- tstrange — タイムゾーンなしでタイムスタンプを表示するのに役立ちます
- 奇妙な — タイムスタンプをタイムゾーンとともに表示できます
- 日付範囲 — 日付の範囲
UUIDの種類
Universally Unique Identify (UUID) は、アルゴリズムによって生成される 128 ビットの量です。 世界中の別の人が同じアルゴリズムを使用して同じ識別子を生成する可能性はほとんどありません。 そのため、分散システムでは、単一データベース内で一意性を提供するこれらの識別子が理想的な選択肢となります。 UUID は、さまざまなグループがハイフンで区切られた小文字の XNUMX 進数のグループとして記述されます。
PostgreSQL には、16 バイトのストレージを消費するネイティブ UUID データ型があります。UUID は、主キーにとって理想的なデータ型です。
例
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre は、すべて大文字、ハイフン、中括弧なしなどの代替形式の UUID 入力も受け入れます。
XML型
PostgreSQL を使用すると、XML データをデータ型に格納できますが、これはテキスト データ型の拡張にすぎません。ただし、入力 XML が整形式であるかどうかをチェックできるという利点があります。
例
XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')
JSONタイプ
JSONデータを保存するには PostgreSQL 2 つのデータ型を提供します
- JSONの
- JSONB
JSON | ジソンブ |
---|---|
JSON 検証を使用したテキスト データ型の単純な拡張 | JSON データのバイナリ表現 |
挿入は高速ですが、データの取得は比較的遅くなります。 | 挿入は遅いが選択(データの取得は速い) |
入力されたデータを空白も含めてそのまま保存します。 | インデックス作成をサポートします。 空白を最適化して検索を高速化する可能性があります。 |
データ取得時の再処理 | データ取得時に再処理は不要 |
JSON データ型を使用する特別な必要性がない限り、最も広く使用されている JSON データ型は jsonb を使用しました。
例
CREATE TABLE employee ( id integer NOT NULL, age integer NOT NULL, data jsonb );
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}');
疑似型
PostgreSQL には、疑似タイプと呼ばれる特殊な目的のエントリが多数あります。疑似型を次のように使用することはできません。 PostgreSQL 列のタイプ。関数の引数や戻り値の型を宣言するために使用されます。
使用可能なそれぞれの疑似型は、関数の動作に関するドキュメントが特定の値を単に取得したり返したりすることに対応していない状況で役立ちます。 SQLデータ型.
お名前 | 説明 |
---|---|
任意 | 関数はすべての入力データ型を受け入れます。 |
配列 | この関数は、任意の配列データ型を受け入れます。 |
任意の要素 | この関数は任意のデータ型を受け入れます。 |
任意の列挙型 | この関数は、任意の enum データ型を受け入れます。 |
非配列 | この関数は、配列以外の任意のデータ型を受け入れます。 |
C文字列 | 関数は、NULL で終了する C 文字列を受け入れるか、返します。 |
内部 | 内部関数はサーバー内部のデータ型を受け入れるか返します。 |
言語ハンドラ | 言語ハンドラーを返すように宣言されています。 |
USBレコーディング | 指定されていない行タイプを返す関数を見つけます。 |
トリガー | トリガーを返すにはトリガー関数を使用します。 |
この関数を使用するユーザーは、疑似型が引数の型として使用されるときに関数が安全に動作することを確認する必要があることが重要です。
データ型を使用したベスト プラクティス
- 入力を制限する場合を除き、「テキスト」データ型を使用してください。
- 「char」は決して使用しないでください。
- 整数には「int」を使用します。bigintは、非常に大きな数値の場合のみ使用してください。
- ほぼ常に「数値」を使用します
- フロートインを使用する PostgreSQL IEEE 754 データソースがある場合
まとめ
- PostgreSQL ユーザーにネイティブ データ型の豊富なセットを提供します
- PostgreSQL テキスト値を格納するための文字データ型をサポートします
- PostgreSQL 1つの異なる数値型をサポートします: 2. 整数、XNUMX. 浮動小数点数
- バイナリ文字列はバイトまたはオクテットのシーケンスです
- PostgreSQL ネットワーク データのストレージを最適化するのに役立つネットワーク アドレス タイプがあります
- テキスト検索 PostgreSQL データ構造は全文検索をサポートするように設計されています
- 日付/時刻 PSQL データ型では、さまざまな形式の日付と時刻の情報を使用できます。
- ブール値の Postgres フィールド タイプは、1 つの値 2. True 3. False XNUMX. Null を保持できます。
- 幾何学的な PostgreSQL データ型は 2 次元の空間オブジェクトを表します
- 列挙型データ型 PostgreSQL 国コードや支店 ID など、めったに変更されない情報を表すのに役立ちます
- Universally Unique Identify (UUID) は、アルゴリズムによって生成される 128 ビットの量です。
- PostgreSQL 疑似タイプと呼ばれる特殊な目的のエントリが多数あります
- 入力を制限したくない場合は、「テキスト」データ型を使用することをお勧めします。