データ型の概要:INT VARCHAR DATE BOOLEAN
基本的なSQLデータ型である整数、varchar/text、日付とタイムスタンプ、ブール値、10進数を学び、各列に適した型を選べるようになります。
「データ型の概要:INT VARCHAR DATE BOOLEAN」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
型が重要な理由
すべての列には固定された型があります。型によって、次のことが決まります。
- どの値が有効か
- 各行が使用するストレージ容量
- どの演算子や関数を適用できるか
- プランナーがインデックスや結合をどのように選ぶか
整数型
PostgreSQLには、3種類のサイズの整数型があります。
SMALLINT -- 2 bytes, -32768 to 32767
INTEGER -- 4 bytes, ±2.1 billion (alias: INT)
BIGINT -- 8 bytes, ±9.2 quintillion
-- Auto-incrementing variants:
SMALLSERIAL BIGSERIAL SERIALNUMERIC / DECIMAL
金額や正確な小数にはNUMERIC(precision, scale)を使います。FLOATは決して使わないでください。
CREATE TABLE invoices (
id BIGSERIAL PRIMARY KEY,
amount NUMERIC(12, 2) NOT NULL, -- up to 10 digits + 2 decimals
tax_rate NUMERIC(5, 4) NOT NULL -- 0.0875 = 8.75%
);FloatとNumericの違い
REAL(4バイト)とDOUBLE PRECISION(8バイト)は不正確です。2進数の小数を丸めるためです。科学計算には適していますが、金額の扱いには適していません。
-- Inexact:
SELECT 0.1::FLOAT + 0.2::FLOAT; -- 0.30000000000000004
-- Exact:
SELECT 0.1::NUMERIC + 0.2::NUMERIC; -- 0.3テキスト型:VARCHARとTEXT
PostgreSQLには、主に2種類のテキスト型があります。
-- VARCHAR(n) — variable-length, max n characters
email VARCHAR(255)
-- TEXT — variable-length, no declared limit
description TEXT
-- In PostgreSQL both have the same performance.
-- VARCHAR(n) just adds a length check.
-- CHAR(n) (fixed-length, blank-padded) — avoid.日付と時刻
日付と時刻には専用の型を使い、文字列として保存しないでください。
DATE -- 2024-03-15
TIME -- 14:30:00
TIMESTAMP -- 2024-03-15 14:30:00 (no time zone)
TIMESTAMPTZ -- 2024-03-15 14:30:00+02 (recommended)
INTERVAL -- 1 day, 3 hours
-- Prefer TIMESTAMPTZ unless you have a strong reason not to.ブール型
BOOLEANはTRUE、FALSE、またはNULLを保存します。
CREATE TABLE tasks (
id BIGSERIAL PRIMARY KEY,
done BOOLEAN NOT NULL DEFAULT false
);
SELECT * FROM tasks WHERE done; -- shorthand for done = true
SELECT * FROM tasks WHERE NOT done;UUID
グローバルに一意な識別子には、次の型を使います。
CREATE TABLE api_keys (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id BIGINT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);JSONとJSONB
半構造化されたドキュメントには、次の型を使います。
-- JSON — text, preserves whitespace, no index
-- JSONB — binary, deduplicated keys, indexable with GIN
CREATE TABLE events (
id BIGSERIAL PRIMARY KEY,
payload JSONB NOT NULL
);配列
PostgreSQLの列には、任意の基本型の配列を指定できます。
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
title TEXT NOT NULL,
tags TEXT[] NOT NULL DEFAULT '{}'
);
INSERT INTO posts (title, tags) VALUES
('Hello', ARRAY['sql', 'intro']);
SELECT * FROM posts WHERE 'sql' = ANY(tags);適切な型を選ぶ
目安は次のとおりです。
- 金額 →
NUMERIC(FLOATは決して使いません) - ID →
BIGSERIALまたはUUID - 日付 → イベントには
TIMESTAMPTZ、暦上の日にはDATE - 短いコード →
VARCHAR(n)、長いテキスト →TEXT - フラグ →
BOOLEAN
まとめ
要件を満たす最も小さな型を選びます。
- 適切な型にすると、インデックスが小さくなり、統計情報が改善され、バグが減ります
- 正確な小数にはNUMERICを使います
- イベントのタイムスタンプにはTIMESTAMPTZを使います
- 型付きデータを文字列として保存しないでください。検証機能とインデックスを失うためです
確認問題
商品の価格を保存する必要があります。どの型を選ぶべきですか。
よくある質問
「データ型の概要:INT VARCHAR DATE BOOLEAN」レッスンは無料ですか?
はい。「データ型の概要:INT VARCHAR DATE BOOLEAN」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「データ型の概要:INT VARCHAR DATE BOOLEAN」で何を学びますか?
基本的なSQLデータ型である整数、varchar/text、日付とタイムスタンプ、ブール値、10進数を学び、各列に適した型を選べるようになります。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「データ型の概要:INT VARCHAR DATE BOOLEAN」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- RDBMSとは何か、なぜテーブルが重要か
- 主キーと一意性
- NULL:第3の真理値
- データ型の概要:INT VARCHAR DATE BOOLEAN