このレクチャーは、実はコースの最初にやってもよかった内容なんだ。でも、もし最初にこれをやったら、最初の課題やレクチャーがめっちゃ退屈になっちゃうと思う。もし一日だけ建設作業員やってみるなら、最初にレンガの種類や形を勉強したい?それともタワークレーンを30分間運転してみたい?やっぱり後者だよね :)
生徒ってのは、ただ知識を詰め込む器じゃなくて、火をつけて燃やす(でも燃やし尽くさないように!)たい存在なんだ。全部教えようとするんじゃなくて、面白く感じてもらえるようにしたいんだよね。で、今こそデータ型と仲良くなるタイミング!
PostgreSQLのデータ型っていうのは、テーブルの特定のカラムにどんな情報を保存するかを指定するもの。例えば、数字、テキスト、日付とか。これは、収納ボックスを選ぶのとちょっと似てる。小さい箱は小物用、大きい箱は靴用、透明な箱は糸用で中身がすぐ分かる、みたいな感じ。
例:
- 人の年齢を保存したいなら、数値型がピッタリ。
- 名前を保存したいなら、テキスト型が必要。
- 登録日を記録したいなら、日付型を使うのが自然だよね。
データ型って何のためにあるの?
データ型はこんな風に役立つよ:
- 入力できる情報を制限できる。例えば、数字が必要なところにテキストは入れられない。
- データを構造化できる。どのカラムに何が入ってるか分かれば、クエリも分析も楽になる。
- リソースを節約できる。正しい型を使えば、メモリの消費も減る。
- 精度を保てる。例えば、金額計算には小数点付きの数値が必要だよね。
やる気が出る例
学生の情報を保存するテーブルを想像してみて:
id |
name |
age |
enrollment_date |
|---|---|---|---|
| 1 | Otto Mars | 22 | 2023-01-15 |
| 2 | Anna Song | 19 | 2023-02-10 |
ここでidはユニークなID(数字)、nameはテキスト、ageは年齢の数字、enrollment_dateは学生の入学日。全部違うデータ型なのは、それぞれ違う側面を表してるからだよ。
PostgreSQLのデータ型の分類
PostgreSQLはデータ型の扱いがめっちゃ柔軟。ざっくり分類を紹介するね。
主なデータ型カテゴリ:
数値型
- 整数(例:数量、ID)や小数(例:お金)を保存するための型。
- 例:
INTEGER、NUMERIC、FLOAT。
テキスト型
- テキストや文字列(例:名前、住所)を保存するための型。
- 例:
CHAR、VARCHAR、TEXT。
論理型
- 論理値
TRUE(真)やFALSE(偽)を保存するための型。 - 例:
BOOLEAN。
- 論理値
日付・時刻型
- 日付、時刻、またはその組み合わせを保存するための型。
- 例:
DATE、TIME、TIMESTAMP。
特殊型
- ユニークID、JSONオブジェクト、配列などいろいろ。
- 例:
UUID、JSONB、ARRAY。
PostgreSQLのデータ型の特徴
PostgreSQLはめっちゃたくさんの組み込み型をサポートしてて、カスタム(ユーザー定義)データ型も作れるんだ。だから、複雑なシステムや特殊な要件があるときに超便利!
面白いのは、PostgreSQLでは地理情報も保存できるし、「自分の半径500メートル以内のカフェを探して」みたいなクエリもできる。こういう用途には専用のデータ型が使われるよ。
データ型を明示するメリットは?
全部のカラムをテキスト型にしちゃえば何でも保存できて楽そう…って思うかも。でも、それはダメなやり方!ちゃんと合ったデータ型を指定すると:
クエリが簡単になる。 PostgreSQLが「このカラムは数字だけ」って分かってれば、SUM()とかの計算も速くなる。
ミスを防げる。 例えば、年齢カラムにうっかり「三十二」って文字列を保存しちゃったら、エラーを見つけるのが超大変になるよ。
GO TO FULL VERSION