반응형
데이터 타입이란?
반응형

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
반응형
'sqld' 카테고리의 다른 글
| 엔티티의 특징을 알아봅시다! (0) | 2026.02.19 |
|---|---|
| 엔티티(Entity)란? (0) | 2026.02.19 |
| SQL 쉽게 이해하기 (0) | 2026.02.19 |
| 데이터베이스가 무엇인지 알아보자! (0) | 2026.02.19 |
| 데이터 모델링에 대한 요약 정리 (0) | 2026.02.19 |