본문 바로가기
sqld

데이터 타입이란?

by 자격증원톱 2026. 2. 19.
반응형

데이터 타입이란?

반응형

 

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