데이터 타입이란?
f
firststep 에디터
IT / 자격증 전문 라이터
2026년 2월 19일633
데이터 타입이란?
1) 데이터 타입이란?
- 테이블 컬럼에 데이터를 넣을 때 “이 칸에는 어떤 종류의 데이터를, 어떤 크기로 저장할지” 정하는 규칙입니다.
- 타입이 맞지 않거나 크기를 넘기면 DB가 오류를 냅니다.
예시
age 컬럼이 INT(정수)인데 "스무살"을 넣으면 → 오류
name이 VARCHAR(5)인데 "HongGildong"(10글자)을 넣으면 → 오류
2) 데이터 타입이 왜 중요하냐?
- 저장 형식이 정확해짐(숫자는 숫자, 날짜는 날짜로)
- 잘못된 입력을 막음 → 데이터 무결성(정확성) 유지
- 공간/성능 최적화 → 필요 이상으로 큰 타입 쓰면 낭비
예시
점수를 저장하는데 TEXT로 저장하면
- 정렬/계산이 이상해지고(“100”이 “9”보다 작게 정렬될 수도 있음)
- 계산도 번거로워집니다.
그래서 점수는 INT 같은 숫자 타입을 씁니다.
3) 데이터 타입의 대표 종류(이미지 내용 요약)
(1) 숫자 타입
- INT: 정수(가장 흔함)
- BIGINT: 매우 큰 정수
- SMALLINT: 작은 정수
- DECIMAL/NUMERIC: 정확한 소수(돈/정확한 값)
- FLOAT/DOUBLE: 근사 소수(오차 가능)
- MONEY/SMALLMONEY: 화폐 금액(DB에 따라 제공)
예시
- 나이: INT
- 통장 잔액: DECIMAL(12,2) (소수 둘째 자리까지 정확히)
- 센서 측정값: FLOAT (근사치 OK)
(2) 문자 타입
- CHAR(n): 고정 길이 문자열
- VARCHAR(n): 가변 길이 문자열
- TEXT: 긴 문자열(본문/설명)
예시
- 주민번호처럼 길이가 항상 같은 값: CHAR(13)
- 이름처럼 길이가 들쭉날쭉: VARCHAR(20)
- 게시글 내용: TEXT
(3) 날짜/시간 타입
- DATE: 날짜만
- TIME: 시간만
- DATETIME: 날짜+시간
- TIMESTAMP: 날짜+시간(보통 시스템/UTC 변환/자동 기록 용도로 많이 쓰임)
예시
- 생년월일: DATE
- 수업 시작 시간: TIME
- 로그인 시각: DATETIME 또는 TIMESTAMP
(4) 기타 타입
- BINARY/VARBINARY: 이진 데이터(파일 조각 등)
- BOOLEAN: 참/거짓(True/False)
예시
- 프로필 사진을 파일로 저장하지 않고 DB에 직접 넣으면: VARBINARY
- 수강 여부: BOOLEAN
4) DATETIME vs TIMESTAMP 차이(핵심)
이미지 요지는 이겁니다.
- DATETIME
- “그 시각 그대로” 저장하는 느낌
- 시간대(UTC 변환)를 특별히 다루지 않는 경우가 많음
- 예: “2026-02-19 10:00”은 그냥 그 값 자체
- TIMESTAMP
- 보통 시간대(UTC) 기준 변환/자동 기록에 더 적합
- 시스템 변경 시간, 로그 기록 등에 자주 사용
- 예: 한국에서 10:00 저장 → UTC로 바꿔 저장했다가 조회 시 다시 맞춰 보여줄 수 있음(DB/설정에 따라)
쉬운 한 줄
- DATETIME = 사람이 적는 ‘일정 시간’에 강함
- TIMESTAMP = 시스템이 기록하는 ‘로그 시간’에 강함
5) CHAR vs VARCHAR 차이(핵심 + 예시)
CHAR(고정 길이)
- 길이가 항상 n칸
- 짧게 넣어도 남는 칸을 채움(공백 포함 저장되는 느낌)
예) CHAR(5)에 "ABC" 저장
→ "ABC "처럼 5칸 맞춰 저장
언제 쓰나?
- 길이가 항상 같은 코드(예: “A001”, “KOR”, “M/F” 같은 고정 규격)
VARCHAR(가변 길이)
- 실제 길이만큼만 저장(공간 효율 좋음)
예) VARCHAR(5)에 "ABC" 저장
→ "ABC"만 저장
언제 쓰나?
- 이름, 이메일처럼 길이가 사람마다 다른 데이터
6) 한 번에 감 잡는 예시 테이블(수강신청)
CREATE TABLE student (
student_id INT,
name VARCHAR(20),
gender CHAR(1),
birth_date DATE,
created_at TIMESTAMP
);
- student_id: 숫자라 INT
- name: 길이가 달라서 VARCHAR
- gender: 항상 1글자라 CHAR(1)
- birth_date: 날짜만 필요해서 DATE
- created_at: 생성 시간 자동 기록용이라 TIMESTAMP
f
firststep 에디터 · IT / 자격증 전문 라이터
firststep.kr의 실무 에디터로서 무언가를 처음 도전하는 분들이 헤매지 않도록 검증된 지식과 실습 가이드를 작성합니다.
댓글 0개
댓글을 작성하려면 로그인이 필요합니다
간단한 이메일과 비밀번호로 3초 만에 가입하고 의견을 남겨보세요.
첫 번째 댓글을 남겨보세요!