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: 자동 증가값의 폭