SQLの基本を完全ガイド!初心者でもわかるデータベース操作
生徒
「データを並び替えるときに、空白みたいなデータが上に来たり下に来たりして混乱します…」
先生
「それはNULLという値が関係しています。PostgreSQLでは、そのNULLをどこに並べるかも指定できます。」
生徒
「NULLって何ですか?数字の0とは違うんですか?」
先生
「NULLは『まだ何も書かれていない状態』です。空欄の名簿を想像すると分かりやすいですよ。」
1. SQLとは何か?
SQLは、データベースという箱に入っている大量のデータを整理して取り出すための言葉です。データベースは、紙の名簿や表を何万枚もまとめて保管できる倉庫のようなものです。SQLを使うと、その中から必要な情報だけを探したり、順番を変えて見やすく並べたりできます。PostgreSQLは、そのSQLを使って操作する代表的なデータベースの一つです。
2. 並び替えとORDER BYの基本
データを並び替えるときに使うのがORDER BYです。例えば、年齢の小さい順、大きい順のように、ルールを決めて表を整列させます。これは、紙の名簿を年齢順に並べ直す作業と同じ感覚です。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | | ichiro@example.com
4 | 高橋次郎 | 30 | jiro@example.com
5 | 伊藤美咲 | | misaki@example.com
3. NULLとは何かを理解しよう
NULLとは「値が存在しない」状態を表します。0や空の文字とは違い、「まだ決まっていない」「分からない」という意味を持ちます。名簿で例えると、年齢欄が空白のままになっている状態です。PostgreSQLでは、このNULLがあると並び替えの結果が少し分かりにくくなることがあります。
4. NULLS FIRSTとNULLS LASTの役割
PostgreSQLでは、ORDER BYと一緒にNULLS FIRSTやNULLS LASTを指定できます。これは、NULLを先頭に並べるか、最後に並べるかを決めるための指示です。FIRSTは「最初」、LASTは「最後」という意味です。英語が苦手でも、この二つだけ覚えれば十分です。
5. NULLを最後に並べる例(NULLS LAST)
年齢順に並べたいとき、年齢が分からない人は最後にまとめたい場合があります。そのときにNULLS LASTを使います。
SELECT id, name, age
FROM users
ORDER BY age ASC NULLS LAST;
id | name | age
---+------------+-----
2 | 佐藤花子 | 19
1 | 山田太郎 | 25
4 | 高橋次郎 | 30
3 | 鈴木一郎 |
5 | 伊藤美咲 |
6. NULLを最初に並べる例(NULLS FIRST)
逆に、未入力のデータを先に確認したい場合は、NULLS FIRSTを使います。チェック漏れを探すときに便利です。
SELECT id, name, age
FROM users
ORDER BY age ASC NULLS FIRST;
id | name | age
---+------------+-----
3 | 鈴木一郎 |
5 | 伊藤美咲 |
2 | 佐藤花子 | 19
1 | 山田太郎 | 25
4 | 高橋次郎 | 30
7. 降順とNULLの関係
DESCを使って大きい順に並べる場合でも、NULLの位置は指定できます。PostgreSQLでは、何も書かないと並び方が分かりにくくなることがあるため、初心者のうちはNULLS FIRSTやNULLS LASTを明示的に書くのがおすすめです。
SELECT id, name, age
FROM users
ORDER BY age DESC NULLS LAST;
id | name | age
---+------------+-----
4 | 高橋次郎 | 30
1 | 山田太郎 | 25
2 | 佐藤花子 | 19
3 | 鈴木一郎 |
5 | 伊藤美咲 |
8. 初心者が混乱しやすいポイント
NULLは数字でも文字でもない特別な存在です。そのため、並び替えや計算の結果に影響します。PostgreSQLでORDER BYを使うときは、「NULLをどう扱いたいか」を最初に考える癖をつけると、データが見やすくなります。これは、名簿の空欄を先に確認するか、後回しにするかを決める作業と同じです。