コンテンツにスキップ

データ型

PetraDBはSQL構文、識別子の処理、型キャストについてPostgreSQLの規約に従います。

  • 大文字小文字を区別しないキーワードSELECTselectSelectは同等です
  • 非引用符識別子の小文字化 — 非引用符の識別子は小文字に変換されます(CREATE TABLE Users → テーブル名users
  • ダブルクォート識別子 — 大文字小文字を保持します("MixedCase"はそのまま)
  • 文字列エスケープ — シングルクォートの二重化('it''s')およびEストリング(E'it\'s'
  • 演算子 — 不等号には!=<>の両方が使えます
説明
SMALLINT16ビット整数(-32768から32767)
INT / INTEGER32ビット整数
BIGINT64ビット整数
SMALLSERIAL自動インクリメント16ビット整数(バッキングシーケンスを作成)
SERIAL自動インクリメント32ビット整数(バッキングシーケンスを作成)
BIGSERIAL自動インクリメント64ビット整数(バッキングシーケンスを作成)
DOUBLE / FLOAT / REAL倍精度浮動小数点
NUMERIC(p,s) / DECIMAL(p,s)固定精度小数
TEXT可変長文字列
CHAR(n)固定長文字列(右側をスペースで埋める)
VARCHAR(n)可変長文字列(最大n文字、パディングなし)
BOOLEAN真/偽
DATE日付(yyyy-MM-dd
TIME時刻(HH:mm:ss
TIMESTAMP日付と時刻
TIMESTAMP WITH TIME ZONEタイムゾーンオフセット付き日付と時刻
INTERVAL期間(ISO 8601またはN days N hours N minutes N seconds
UUIDユニバーサル一意識別子
JSON / JSONB構造化JSONオブジェクトと配列
BYTEAバイナリデータ
ENUMカスタム列挙型(CREATE TYPE ... AS ENUMで定義)
INT[]TEXT[]など型付き配列(任意の基本型に[]サフィックス)

::演算子またはCAST(expr AS type)で型を変換します。

SELECT '2024-06-15'::DATE;
SELECT CAST('14:30:00' AS TIME);
SELECT '2 hours 30 minutes'::INTERVAL;
SELECT CAST(val AS TEXT);
SELECT '42'::INT;
SELECT 1::BOOLEAN;
SELECT EXTRACT(year FROM created_at);
SELECT '2024-01-01'::DATE + 10; -- 日数を加算
SELECT '2024-01-15'::DATE - '2024-01-10'::DATE; -- 日数の差
SELECT now() + '2 hours'::INTERVAL; -- タイムスタンプ + インターバル
SELECT now() - '30 minutes'::INTERVAL; -- タイムスタンプ - インターバル
SELECT '1 hour'::INTERVAL * 3; -- インターバルのスケーリング
SELECT EXTRACT(year FROM now()); -- フィールドの抽出
SELECT date_trunc('month', now()); -- 切り捨て
PRIMARY KEY (id)
UNIQUE (email)
NOT NULL
DEFAULT value
FOREIGN KEY (col) REFERENCES other_table (col) ON DELETE CASCADE ON UPDATE CASCADE