이 강의는 사실 우리 코스의 첫 시작으로도 괜찮았을 거야. 근데 그랬으면 네가 처음 풀 문제랑 강의가 너무 지루했을걸. 만약 하루만 건설 현장 일꾼 해본다고 하면, 벽돌 종류랑 모양부터 공부하고 싶어? 아니면 타워 크레인 30분 조종해보고 싶어? 바로 그거지 :)
학생은 채워야 하는 그릇이 아니라, 불붙여야 하는 횃불이야(그리고 태워먹으면 안 되고)! 나는 내가 아는 걸 다 말해주려고 하는 게 아니라, 네가 재밌게 느끼도록 하려고 해. 그리고 지금이야말로 데이터 타입이랑 친해질 타이밍이야.
PostgreSQL에서 데이터 타입은 테이블의 특정 컬럼에 어떤 종류의 정보가 저장될지 지정하는 거야. 예를 들면, 숫자, 텍스트, 날짜 같은 거지. 이건 약간 네가 뭘 보관할 때 박스 고르는 거랑 비슷해: 작은 건 자잘한 거, 큰 건 신발, 투명한 건 실 같은 거 바로 보이게.
예시:
- 사람 나이를 저장하고 싶으면, 숫자 타입이 딱이야.
- 이름을 저장하려면, 텍스트 타입이 필요하지.
- 가입 날짜를 표시하려면, 날짜 타입 쓰는 게 당연하지.
데이터 타입이 왜 필요할까?
데이터 타입은 이런 데 도움 돼:
- 입력되는 정보를 제한해. 예를 들어, 숫자만 들어가야 하는데 텍스트 넣으려고 하면 안 돼.
- 데이터를 구조화해. 각 컬럼에 뭐가 들어가는지 확실히 아니까, 쿼리 짜고 정보 분석하기가 쉬워져.
- 리소스 절약. 제대로 된 타입 쓰면 메모리도 덜 먹어.
- 정확성 유지. 예를 들어, 돈 계산할 땐 소수점 고정된 숫자가 필요하지.
영감을 위한 예시
학생 정보를 저장하는 테이블을 상상해봐:
id |
name |
age |
enrollment_date |
|---|---|---|---|
| 1 | Otto Mars | 22 | 2023-01-15 |
| 2 | Anna Song | 19 | 2023-02-10 |
여기서 id는 유니크한 식별자(숫자), name은 텍스트, age는 나이 숫자, enrollment_date는 학생 등록 날짜야. 이 데이터들은 각각 다른 데이터 타입을 쓰는 게, 서로 다른 속성을 설명하기 때문이야.
PostgreSQL 데이터 타입 분류
PostgreSQL은 데이터 타입 다루는 데 진짜 유연해. 아래는 간단한 분류야.
주요 데이터 타입 카테고리:
숫자 타입
- 정수(예: 개수, 식별자)랑 소수점 있는 숫자(예: 돈) 저장할 때 써.
- 예시:
INTEGER,NUMERIC,FLOAT.
텍스트 타입
- 텍스트랑 문자열(예: 이름, 주소) 저장할 때 써.
- 예시:
CHAR,VARCHAR,TEXT.
논리 타입
- 논리 값
TRUE(참) 또는FALSE(거짓) 저장할 때 써. - 예시:
BOOLEAN.
- 논리 값
날짜와 시간 타입
- 날짜, 시간, 또는 둘 다 저장할 때 써.
- 예시:
DATE,TIME,TIMESTAMP.
특수 타입
- 유니크 식별자, JSON 객체, 배열 등등.
- 예시:
UUID,JSONB,ARRAY.
PostgreSQL 데이터 타입의 특징
PostgreSQL은 엄청 다양한 내장 타입을 지원하고, 커스텀(사용자 정의) 데이터 타입도 만들 수 있어. 이 덕분에 복잡한 시스템에서 데이터에 특이한 요구사항이 있을 때 진짜 강력하게 쓸 수 있지.
재밌는 건, PostgreSQL에서는 심지어 지리 정보도 저장할 수 있고, "내 주변 500미터 안에 있는 카페 찾아줘" 같은 쿼리도 할 수 있어. 이런 용도로는 특수 데이터 타입을 써.
데이터 타입을 명확히 지정하면 뭐가 좋을까?
가끔은 테이블 모든 컬럼을 텍스트로 하면 편할 것 같지? 텍스트는 뭐든 저장할 수 있으니까. 근데 이건 진짜 안 좋은 습관이야! 적절한 데이터 타입을 지정하면:
쿼리가 더 쉬워져. PostgreSQL이 컬럼에 숫자만 들어간다는 걸 알면, SUM() 같은 계산을 훨씬 빠르게 해줘.
에러를 피할 수 있어. 예를 들어, 나이 저장하는 컬럼에 실수로 "삼십이"라고 텍스트로 넣으면, 이런 에러는 잡기 진짜 힘들어.
GO TO FULL VERSION