もう数字やテキストを保存するデータ型には慣れてきたよね。じゃあ次は論理データ型、つまりBOOLEANについて話そう。これはたぶん一番「正直」なデータ型で、答えは2つだけ。「はい」か「いいえ」。たまに「たぶん」(つまりNULL)もあるけどね。
論理データ型BOOLEANは、次の値しか持てないよ:
TRUE(真);FALSE(偽);NULL(値なし)。
スイッチを想像してみて。オンならTRUE、オフならFALSE、もし電球が消えたらNULLみたいな感じ。
論理データ型は、SQLで意思決定や条件分岐の基本だよ。これがなかったら、クエリでちゃんとしたフィルターも作れないし、何かのステータスも表せない。
使い方の例
論理データ型はデータベースでめっちゃ使われてる。例えばこんなケース:
フラグやステータス。
例えば、is_activeフィールドはユーザーがアクティブか(TRUE)、そうじゃないか(FALSE)を示せる。
SELECT username, is_active
FROM users
WHERE is_active = TRUE;
進捗管理。
例えば、is_completeフィールドはタスクが終わったかどうかを保存できる。
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
在庫チェック。
is_availableフィールドは商品が在庫にあるかどうかを表せる。
PostgreSQLでBOOLEANをどう使う?
PostgreSQLの論理データ型はシンプルにBOOLEANって名前。じゃあテーブルを作って、いくつかカラムを追加してみよう:
- タスクのユニークID
- タスク名
- タスク完了の論理ステータス
次に、テーブルにいくつかレコードを追加してみるよ:
| task_id | task_name - VARCHAR(255) | is_complete - BOOLEAN |
|---|---|---|
| 1 | レポートを書く | false |
| 2 | 買い物に行く | true |
| 3 | 本を読む | null |
データの取得
じゃあ、論理値を使ってデータを取り出す方法を見てみよう。例えば、未完了のタスクだけ取得したいなら:
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
このクエリはis_completeがFALSEのタスクだけ返すよ。
結果:
| task_name |
|---|
| レポートを書く |
BOOLEANの使い方のコツ
値のフィルタリング
論理型を使うときは、こんな書き方ができるよ:
= TRUE— 値が真のときに明示的に指定したい場合。= FALSE— 偽の値を選びたい場合。IS NULL— 値がないレコードを選びたい場合。
例:
SELECT task_name
FROM tasks
WHERE is_complete IS NULL;
条件の簡略化
PostgreSQLはけっこう「賢い」から、= TRUEって書かなくてもOKなことが多い。例えば:
SELECT task_name
FROM tasks
WHERE is_complete;
このクエリはWHERE is_complete = TRUEと同じ意味だよ。
BOOLEANでよくあるミス
新しいデータ型を使い始めると、ミスはつきもの。よくあるトラブルをいくつか紹介するね:
NULLとの比較。 初心者はよくis_active = NULLって書いちゃう。でもNULLは=で比較できない。値がNULLかどうかはIS NULLやIS NOT NULLを使おう。
= TRUEの明示。 たまにプログラマーがWHERE is_active = TRUEみたいに余計な構文を追加しがち。間違いじゃないけど、WHERE is_activeだけで十分。
文字列の誤用。 論理型は型が厳しい。is_active = 'TRUE'やis_active = 'FALSE'みたいに書いちゃダメ。値はTRUE、FALSE、NULLをそのまま使おう。
なんで必要なの?
「なんでわざわざBOOLEANなんて使うの?数字で1が真、0が偽でいいじゃん」って思うかもしれない。
答えはシンプル。BOOLEANを使うとコードやデータがめっちゃ分かりやすくなる。誰かがis_activeフィールドを見たとき、「あ、これは論理値(はい/いいえ)を保存してるんだな」ってすぐ分かる。データベースのスキーマも読みやすくなるし、他の開発者にもモデルが伝わりやすいよ。
GO TO FULL VERSION