반응형
PostgreSQL에서는 다양한 데이터 타입을 제공하여, 데이터베이스에서 다양한 형태의 데이터를 저장하고 처리할 수 있도록 지원합니다. 주요 데이터 타입은 다음과 같습니다.
1. 문자열 타입
CHAR(n)
: 고정 길이 문자열. 길이가n
인 문자열을 저장. 주로 길이가 일정한 데이터를 저장할 때 사용합니다.VARCHAR(n)
: 가변 길이 문자열. 최대 길이가n
인 문자열을 저장. 문자열의 길이가n
을 넘지 않도록 제한됩니다.TEXT
: 가변 길이 문자열. 길이에 제한이 없으며, 텍스트 데이터를 저장할 때 사용됩니다.
2. 숫자 타입
SMALLINT
: 작은 범위의 정수 (-32,768 ~ 32,767).INTEGER
: 일반적인 범위의 정수 (-2,147,483,648 ~ 2,147,483,647).BIGINT
: 큰 범위의 정수 (-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807).DECIMAL(p, s)
: 고정 소수점 숫자.p
는 전체 자릿수,s
는 소수점 이하 자릿수를 나타냅니다. 예:DECIMAL(10, 2)
는 소수점 이하 2자리까지 저장 가능합니다.NUMERIC(p, s)
:DECIMAL
과 동일하지만 더 높은 정밀도를 제공할 수 있습니다.REAL
: 단정밀도 부동소수점 숫자 (4바이트).DOUBLE PRECISION
: 배정밀도 부동소수점 숫자 (8바이트).MONEY
: 금액을 표현하기 위한 데이터 타입. 통화 단위와 관련된 계산에 사용됩니다.
3. 날짜와 시간 타입
DATE
: 날짜를 저장 (연도, 월, 일).TIME
: 시간만 저장 (시, 분, 초).TIMESTAMP
: 날짜와 시간을 저장 (연도, 월, 일, 시, 분, 초).TIMESTAMPTZ
: 시간대가 포함된 날짜와 시간을 저장 (UTC 기준).INTERVAL
: 시간 간격을 저장 (예: '1 day', '10 hours').
4. 불리언 타입
BOOLEAN
:TRUE
,FALSE
,NULL
값을 저장합니다.
5. 바이너리 데이터 타입
BYTEA
: 바이너리 데이터를 저장 (예: 이미지, 파일 등). 크기에 제한 없이 이진 데이터를 저장할 수 있습니다.
6. 배열
- PostgreSQL은 배열 타입을 지원하여, 동일한 데이터 타입의 여러 값을 한 컬럼에 저장할 수 있습니다. 예를 들어,
INTEGER[]
는 정수 배열을 저장할 수 있습니다.
7. JSON 관련 타입
JSON
: JSON 형식의 데이터를 저장합니다. JSON 객체를 그대로 저장할 수 있습니다.JSONB
: 이진 JSON.JSON
과 동일하지만, 데이터를 이진 형식으로 저장하고 검색 성능이 더 빠릅니다.
8. 범위 타입 (Range types)
PostgreSQL은 특정 범위 값을 표현할 수 있는 데이터 타입을 제공합니다.
INT4RANGE
:INTEGER
값의 범위를 저장합니다.NUMRANGE
:NUMERIC
값의 범위를 저장합니다.TSRANGE
:TIMESTAMP
값의 범위를 저장합니다.
9. UUID (Universally Unique Identifier)
UUID
: 전 세계적으로 고유한 식별자를 저장합니다. 주로 복잡한 분산 시스템에서 고유한 ID를 생성할 때 사용됩니다.
10. ENUM (열거형)
ENUM
: 미리 정의된 값들 중 하나만 선택할 수 있는 데이터 타입입니다. 예를 들어,ENUM('small', 'medium', 'large')
와 같이 정의하여 크기 옵션을 저장할 수 있습니다.
11. CIDR, INET, MACADDR
CIDR
: IP 주소 범위(서브넷)를 저장합니다.INET
: 단일 IP 주소를 저장합니다.MACADDR
: MAC 주소를 저장합니다.
12. 하위 타입
ARRAY
: 데이터의 여러 값을 배열로 저장할 수 있습니다.HSTORE
: 키-값 쌍 형태의 데이터를 저장할 수 있습니다.
13. 기타
TSVECTOR
: 텍스트 검색을 위한 데이터 타입.UUID
: 고유한 식별자를 저장.XML
: XML 데이터를 저장할 수 있습니다.
데이터 타입 선택시 고려할 점
- 성능: 예를 들어,
TEXT
와VARCHAR
는 대부분 유사하지만,VARCHAR(n)
은 길이를 제한하므로 약간의 성능 차이가 있을 수 있습니다. - 유효성 검사:
ENUM
타입은 미리 정의된 값만 허용하므로 유효성 검사를 쉽게 할 수 있습니다. - 공간:
BYTEA
같은 데이터 타입은 바이너리 데이터를 저장하므로 큰 공간을 차지할 수 있습니다. - 복잡성:
JSONB
같은 복잡한 데이터 형식은 관계형 데이터베이스에서 JSON 데이터를 저장하고 쿼리할 때 유용합니다.
이렇게 PostgreSQL은 다양한 데이터 타입을 제공하여, 애플리케이션에 맞는 최적의 데이터 모델을 설계할 수 있도록 도와줍니다.
반응형
'DB > MySQL' 카테고리의 다른 글
[ MySQL ] Select로 만든 결과 값을 하나의 Table로 만들기 (0) | 2025.01.17 |
---|---|
[ MySQL ] COLUMN_KEY 사용하기 (1) | 2024.12.17 |
[ MySQL ] 원격으로 접속하기 (0) | 2024.12.17 |
[ MySQL ] Schema - 테이블 구조 확인하기 (0) | 2024.10.30 |
[ MySQL ] CREATE USER - 사용자 생성하고 DB 할당하기 (0) | 2024.10.15 |