Backend
home
💽

DataBase 자료형(Data Type)

생성 일시
2025/08/02 12:21
태그
Database
게시일
2025/08/02
최종 편집 일시
2025/08/02 12:39

데이터베이스 자료형에 대해

데이터베이스 설계의 가장 기본인 자료형에 대해 정리해봤다.
데이터베이스에 테이블을 만들 때 각 열(Column)에 어떤 종류의 데이터가 들어갈지 미리 정의하는 것을 ‘자료형을 지정한다’라고 말한다. 마치 옷을 정리할 때 상의, 하의, 양말을 각각 다른 서랍에 넣는 것과 같다. 이렇게 종류별로 데이터를 관리하면 여러 가지 장점이 있다.
그렇다면 왜 자료형이 중요한 걸까?

왜 자료형이 중요한가?

자료형을 명확하게 지정하면 크게 세 가지 이점을 얻을 수 있다.
1.
데이터 무결성(Data Integrity): 나이 열에 ‘스무살’이라는 글자 대신 숫자 20 만 저장되도록 강제하여 데이터의 신뢰도를 높인다.
2.
저장 공간 효율성(Storage Efficiency): 데이터에 필요한 만큼의 공간만 할당하여 디스크 공간 낭비를 막는다. 예를 들어, -128부터 127까지의 숫자만 저장하면 되는 데이터에 굳이 수십억까지 표현 가능한 큰 공간을 쓸 필요는 없다.
3.
성능 향상(Performance): 데이터 검색이나 정렬 시, 명확한 자료형은 컴퓨터가 데이터를 더 빨리 처리한다.

1. 숫자 자료형 (Numeric Types)

자료형
설명
주요 사용 예시
INTEGER (또는 INT)
가장 대표적인 정수형. 일반적으로 4바이트 크기를 가지며, 약 -21억부터 +21억까지의 숫자를 표현한다.
회원 ID, 나이, 재고 수량, 게시물 번호
BIGINT
INT보다 훨씬 큰 범위의 정수를 저장할 때 사용한다. (8바이트)
매우 많은 회원을 보유한 서비스의 ID, 금융 거래 기록 ID
SMALLINT / TINYINT
INT보다 작은 범위의 정수를 저장하여 공간을 절약할 때 사용합니다.
상태 코드 (예: 0, 1, 2), 분류 코드
DECIMAL (또는 NUMERIC)
고정 소수점 숫자를 저장한다. 정확한 소수점 연산이 필요할 때 사용하며, 오차가 발생하지 않는다. DECIMAL(전체 자릿수, 소수점 이하 자릿수) 형태로 선언한다. 예: DECIMAL(10, 2)
금액, 환율, 이자율 등 돈과 관련된 모든 데이터
FLOAT / REAL
부동 소수점 숫자를 저장한다. 매우 크거나 작은 숫자를 표현할 수 있지만, 근삿값으로 저장되어 미세한 오차가 발생할 수 있다.
과학 계산 데이터, GPS 좌표, 통계 분석 결과
정수형과 소수형의 차이
정수형 (INT, BIGINT 등): 소수점 없는 숫자를 다룬다. 저장할 숫자의 최대/최소 범위를 고려하여 타입을 선택하는 것이 공간의 효율성을 높인다.
소수형 (DECIMAL, FLOAT):
정확성이 생명인 경우 무조건 DECIMAL 을 사용해야 한다. 특히 금융 관련 데이터에서 FLOAT 를 사용하는 것은 큰 장애로 이어질 수 있다.
빠른 계산이 필요하고 미세한 오차를 감수할 수 있는 과학 데이터의 경우 FLOAT 가 더 효율적일 수 있다.

2. 문자열 자료형 (String/Character Types)

글자, 즉 텍스트 데이터를 저장하기 위한 자료형이다. 고정 길이가변 길이 로 나뉜다.
자료형
설명
주요 사용 예시
CHAR(n)
고정 길이 문자열. n으로 지정된 길이만큼 공간을 항상 차지한다. CHAR(10)에 '안녕' (4바이트 가정)을 저장해도 10바이트 공간을 모두 사용합니다.
주민등록번호, 학번, 성별('M'/'F'), 우편번호 등 길이가 항상 같은 데이터
VARCHAR(n)
가변 길이 문자열. n은 저장 가능한 최대 길이를 의미하며, 실제 데이터 길이만큼만 공간을 사용한다. VARCHAR(10)에 '안녕'을 저장하면 실제 필요한 공간(4바이트) + 길이 정보 공간만 사용한다.
회원 이름, 게시물 제목, 주소 등 길이를 예측하기 어려운 대부분의 텍스트
TEXT / CLOB
VARCHAR보다 훨씬 긴 텍스트를 저장하기 위한 자료형입니다.
게시물 본문, 블로그 글, 장문의 설명
CHAR vs VARCHAR
이 둘의 선택은 데이터의 길이가 일정한가? 라는 질문으로 결정된다.
주민등록번호, 성별 코드 처럼 모든 데이터의 길이가 같다면 CHAR 가 미세하게 더 빠르고 효율적이다.
이름, 주소, 제목 처럼 데이터마다 길이가 들쑥날쑥하다면 VARCHAR 를 사용하는 것이 공간 낭비를 막는 현명한 선택이다. 대부분의 경우 VARCHAR가 더 자주 사용된다.

3. 날짜 및 시간 자료형 (Date and Time Types)

날짜와 시간 정보를 저장하기 위한 전용 자료형이다.
자료형
설명
주요 사용 예시
DATE
날짜 정보(년, 월, 일)만 저장한다.
생년월일, 제품 제조일자
TIME
시간 정보(시, 분, 초)만 저장한다.
영업 시작/종료 시간, 알람 시간
DATETIME (또는 TIMESTAMP)
날짜와 시간을 모두 저장한다. TIMESTAMP는 타임존 정보를 포함하거나 시스템 시간에 따라 자동으로 업데이트되는 등 DB 종류에 따라 특징이 조금씩 다르다.
회원가입 일시, 게시물 작성/수정 일시, 로그 기록 시간
왜 문자열 대신 날짜형을 쓸까?
“2025-08-02”를 VARCHAR 에 저장할 수도 있지만, DATE 타입을 사용하면 다음과 같은 장점이 있다.
날짜 계산: ‘2025-08-02’로부터 30일 뒤의 날짜를 구하는 등의 연산이 매우 간편하다.
유효성 검사: ‘2025-02-30’과 같이 존재하지 않는 날짜는 저장 단계에서 차단된다.
정렬: 시간 순서대로 데이터를 정렬하기 용이하다.

4. 기타 주요 자료형

자료형
설명
주요 사용 예시
BOOLEAN (또는 BOOL)
참(True) 또는 거짓(False) 두 가지 상태만 저장한다. (일부 DB에서는 TINYINT(1)로 대체하기도 한다)
동의 여부 (Y/N), 활성/비활성 상태, 공개/비공개 설정
BLOB (Binary Large Object)
이미지, 동영상, 사운드 파일 등 텍스트가 아닌 대용량 이진(Binary) 데이터를 데이터베이스에 직접 저장할 때 사용한다.
프로필 사진, 첨부 파일 (하지만 보통 파일 경로만 저장하는 방식을 더 선호한다)
JSON
JSON 형식의 데이터를 그대로 저장하고, 내부 키(key)를 이용해 검색할 수 있는 기능을 제공한다
유연한 구조가 필요한 설정 정보, 로그 데이터