본문 바로가기

DB/MySQL

[ MySQL ] 데이터 타입 알아보기

반응형

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 데이터를 저장할 수 있습니다.

 

데이터 타입 선택시 고려할 점

  • 성능: 예를 들어, TEXTVARCHAR는 대부분 유사하지만, VARCHAR(n)은 길이를 제한하므로 약간의 성능 차이가 있을 수 있습니다.
  • 유효성 검사: ENUM 타입은 미리 정의된 값만 허용하므로 유효성 검사를 쉽게 할 수 있습니다.
  • 공간: BYTEA 같은 데이터 타입은 바이너리 데이터를 저장하므로 큰 공간을 차지할 수 있습니다.
  • 복잡성: JSONB 같은 복잡한 데이터 형식은 관계형 데이터베이스에서 JSON 데이터를 저장하고 쿼리할 때 유용합니다.

이렇게 PostgreSQL은 다양한 데이터 타입을 제공하여, 애플리케이션에 맞는 최적의 데이터 모델을 설계할 수 있도록 도와줍니다.

반응형