숫자랑 텍스트 저장하는 데이터 타입은 이미 봤지? 이제 논리 데이터 타입 — BOOLEAN에 대해 얘기해볼게. 이건 아마도 제일 "정직한" 타입일 거야. 왜냐면 딱 두 가지 질문에만 답하거든: "응" 아니면 "아니". 가끔은 — "모르겠음" (이건 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이야. 테이블 하나 만들어서 컬럼 몇 개 넣어보자:
- 작업의 유니크 아이디
- 작업 이름
- 작업 완료 논리 상태
그리고 테이블에 몇 개 레코드도 넣어보자:
| 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 안 써도 돼. 예를 들어:
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