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がオブジェクトを識別するために内部的に使用します。
擬似型
擬似型は、関数が標準データ型を返さないことを示す特殊な目的の型です。
例としては、次のものがあります。
any
void
internal
結論
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