Database/Mysql

[Real MySQL] 15-2. 데이터 타입: 숫자

noahkim_ 2023. 11. 26. 15:20

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.

 

1. 정확도

구분 설명 대표 타입
참값 입력한 값을 정확히 그대로 저장하고 조회 INTEGER, DECIMAL
근삿값 (부동소수점) 저장된 값이 입력값과 유사하지만 정확하지 않을 수 있음 FLOAT, DOUBLE

 

2. 포맷

포맷 종류 설명 대표 타입
이진 표기법 숫자를 2진수(binary)로 변환하여 저장
메모리 효율 높음
INTEGER, FLOAT, DOUBLE
십진 표기법 숫자의 각 자릿값을 4비트(BCD) 또는 1바이트 단위로 저장
정밀도 높음
DECIMAL

 

3. 정수

타입 크기 (byte) 최솟값 최댓값
TINYINT 1 –128 127
SMALLINT 2 –32,768 32,767
MEDIUMINT 3 –8,388,608 8,388,607
INT 4 –2,147,483,648 2,147,483,647
BIGINT 8 –9,223,372,036,854,775,808 9,223,372,036,854,770,000

 

4. 실수

항목 부동 소수점 고정 소수점
소수점 위치 유동적 (Floating) 고정적 (Fixed)
정밀도 FLOAT: 약 7자리
DOUBLE: 약 15~16자리
사용자 지정 (예: DECIMAL(20, 5))
정확도 상대적으로 낮음 (이진 표현 특성상 오차 발생 가능) 매우 높음 (정확하게 표현됨)
저장 크기 FLOAT: 4바이트
DOUBLE: 8바이트
자릿수에 따라 달라짐 (숫자 하나당 4비트)
표현 가능 범위 매우 큰 수 또는 매우 작은 수 표현에 유리 정밀한 소수 표현에 적합 (범위는 상대적으로 작음)
속도/성능 빠름 (CPU 연산 최적화) 느림 (연산 시 내부 변환 필요)
사용 목적 과학적 계산, 통계, 일반 수치 처리 정확한 금액 계산 필요할 때 (회계, 세금, 금융 등)
주의사항 근삿값으로 인해 오차 가능성 있음 괄호로 정밀도 지정 필요 (예: DECIMAL(20, 5))

 

예시) 고정 소수점

더보기

DECIMAL(20, 5)

  • 20자리를 사용할 것
  • 소수점 이하는 5자리까지 정밀도가 보장됨

 

5. Auto Increment (자동 증가 옵션)

  • 고유한 숫자를 자동으로 생성하는 기능
  • 숫자 타입의 칼럼에서만 사용 가능
  • 주로 기본키로 사용됩니다. (인덱스 생성 필수)
  • 테이블 당 하나만 사용할 수 있습니다.

 

시스템 변수
  • auto_increment_offset: 자동 증가값의 초기 값
  • auto_increment_increment: 자동 증가값의 폭