PostgreSQLのデータ型を理解する
Wenhao Wang
Dev Intern · Leapcell

Key Takeaways
- PostgreSQLは、多様なデータ形式を処理するための幅広いデータ型を提供します。
- データ型を適切に選択することで、データベースのパフォーマンスと整合性が向上します。
- PostgreSQLは、複雑なデータモデリングのために、配列、JSON、および範囲型などの高度な型をサポートします。
PostgreSQLは、包括的なデータ型スイートを提供し、開発者が多様な形式のデータを効率的に保存および操作できるようにします。適切なデータ型を選択することは、データの整合性を確保し、ストレージを最適化し、クエリのパフォーマンスを向上させるために重要です。この記事では、PostgreSQLで利用可能なさまざまなデータ型について詳しく掘り下げ、それらの使用法と利点に関する洞察を提供します。
数値型
PostgreSQLの数値型は、整数と浮動小数点数の両方を格納するために使用されます。
-
整数型:
smallint: 2バイト整数、範囲は-32,768から32,767。integerまたはint: 4バイト整数、範囲は-2,147,483,648から2,147,483,647。bigint: 8バイト整数、範囲は-9,223,372,036,854,775,808から9,223,372,036,854,775,807。
-
シリアル型 (自動インクリメント整数):
smallserial: 2バイトの自動インクリメント整数。serial: 4バイトの自動インクリメント整数。bigserial: 8バイトの自動インクリメント整数。
-
浮動小数点型:
real: 4バイトの単精度浮動小数点数。double precision: 8バイトの倍精度浮動小数点数。
-
任意精度型:
numericまたはdecimal: ユーザー指定の精度、金額などの正確な数値に適しています。
金額型
money: 固定の小数精度で通貨金額を格納します。これは、金融計算に適した8バイト型です。
文字型
文字型は、テキスト文字列を格納するために使用されます。
char(n): 固定長文字型、スペース埋め。varchar(n): 長さ制限のある可変長文字型。text: 特定の制限のない可変長文字型。
バイナリデータ型
bytea: バイナリ文字列を格納し、画像やファイルなどのバイナリデータの格納を可能にします。
日付/時刻型
PostgreSQLは、日付と時刻の値を処理するためのいくつかの型を提供します。
date: カレンダーの日付(年、月、日)を格納します。time [ (p) ] [ without time zone ]: 時刻の値を格納します。time [ (p) ] with time zone: タイムゾーン付きの時刻の値を格納します。timestamp [ (p) ] [ without time zone ]: 日付と時刻の両方を格納します。timestamp [ (p) ] with time zone: タイムゾーン付きの日付と時刻の両方を格納します。interval: 時間の範囲を表します。
ブール型
boolean: 論理ブール値を格納します:true、false、またはnull。
列挙型
列挙型(enum)を使用すると、静的な順序付けられた値のセットを作成できます。曜日やステータスコードなど、特定の値のセットのみを含む列に役立ちます。
例:
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
幾何型
PostgreSQLには、2次元空間オブジェクトを表すための型が含まれています。
point: 数の幾何ペア。line: 無限線。lseg: 線分。box: 長方形の箱。path: 閉じているか開いているパス。polygon: ポリゴン。circle: 円。
ネットワークアドレス型
これらの型は、ネットワーク関連の情報を格納するように設計されています。
cidr: IPv4またはIPv6ネットワーク。inet: IPv4またはIPv6ホストアドレス。macaddr: MACアドレス。
ビット文字列型
ビットマスクの格納に使用されます。
bit(n): 固定長ビット文字列。bit varying(n): 可変長ビット文字列。
テキスト検索型
PostgreSQLは、フルテキスト検索機能をサポートするための型を提供します。
tsvector: テキスト検索用に最適化された形式のドキュメント。tsquery: テキストクエリ。
UUID型
uuid: 空間と時間を超えて一意である必要のある識別子に役立つ、Universally Unique Identifierを格納します。
XML型
xml: XMLデータを格納し、XMLドキュメントの格納とクエリを可能にします。
JSON型
PostgreSQLは、JSONデータを強力にサポートしています。
json: JSONデータをテキストとして格納します。jsonb: JSONデータをバイナリ形式で格納し、効率的な処理とインデックス作成を可能にします。
配列
PostgreSQLでは、列を組み込みまたはユーザー定義の基本型のアレイとして定義できます。
例:
CREATE TABLE products ( name text, tags text[] );
複合型
複合型を使用すると、複数のフィールドを持つ構造を作成できます。
例:
CREATE TYPE address AS ( street text, city text, zip_code text );
範囲型
範囲型は、ある要素型の値の範囲を表します。
組み込みの範囲型には次のものがあります。
int4range: 整数の範囲。numrange: 数値の範囲。tsrange: タイムゾーンなしのタイムスタンプの範囲。tstzrange: タイムゾーン付きのタイムスタンプの範囲。daterange: 日付の範囲。
ドメイン型
ドメインは、オプションの制約を持つデータ型です。これらは、再利用可能な制約を作成するのに役立ちます。
例:
CREATE DOMAIN positive_integer AS integer CHECK (VALUE > 0);
オブジェクト識別子型
oid: オブジェクト識別子。PostgreSQLがオブジェクトを識別するために内部的に使用します。
擬似型
擬似型は、関数が標準データ型を返さないことを示す特殊な目的の型です。
例としては、次のものがあります。
anyvoidinternal
結論
PostgreSQLの豊富なデータ型セットは、複雑なデータ構造をモデル化し、データの整合性を強化するための柔軟性を提供します。適切なデータ型を理解して利用することは、効率的で信頼性の高いデータベースシステムを設計するための基本です。
FAQs
smallint、integer、bigint、real、double precision、およびnumeric。
jsonbはJSONをバイナリ形式で格納するため、処理とインデックス作成が高速になります。
はい、複合型、列挙型、またはドメイン型を使用します。
Leapcellをご紹介します。バックエンドプロジェクトのホスティングに最適です。
Leapcellは、Webホスティング、非同期タスク、およびRedis向けの次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、またはRustで開発。
無制限のプロジェクトを無料でデプロイ
- 使用量に対してのみ支払い — リクエストも料金もかかりません。
比類のない費用対効果
- アイドル料金なしの従量課金制。
- 例:25ドルで平均応答時間60msで694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOps統合。
- 実用的な洞察のためのリアルタイムのメトリックとロギング。
簡単なスケーラビリティと高性能
- 高い同時実行性を容易に処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ — 構築に集中するだけです。
ドキュメントで詳細をご覧ください。
Xでフォローしてください:@LeapcellHQ



