[MySQL] 숫자 타입
데이터들엔 타입이 존재합니다. 학번 데이터라면 정수를, 이름 데이터라면 문자열을 저장하듯이 SQL에서도 타입이 존재합니다.
오늘 포스트에서는 여러 타입 중 숫자와 관련한 타입들을 알아보도록 하겠습니다.
모든 숫자 타입은 UNSIGNED 옵션을 사용할 수 있습니다. UNSIGNED 옵션을 사용하면 0과 양수만을 표현하게 됩니다.
타입(크기)
1. 정수
우선 가장 기본적인 숫자라고 할 수 있는 정수 타입에 대해 알아보겠습니다.
타입명 | 크기 | 값의 범위 | 값의 범위 (unsigned) |
TINYINT | 1 byte | -(2^7) ~ 2^7 - 1 | 0 ~ 2^8 - 1 |
SMALLINT | 2 byte | -(2^15) ~ 2^15 | 0 ~ 2^16 - 1 |
MEDIUMINT | 3 byte | -(2^23) ~ 2^23 | 0 ~ 2^24 -1 |
INT | 4 byte | -(2^31) ~ 2^31 | 0 ~ 2^32 - 1 |
BIGINT | 5 byte | -(2^63) ~ 2^63 | 0 ~ 2^64 - 1 |
2. 고정 소수점과 부동 소수점
컴퓨터의 실수 표현에는 고정 소수점과 부동 소수점 방식이 존재합니다. 지금은 SQL을 다루기 때문에 깊게는 설명할 수 없지만, 고정 소수점은 정확한 데이터를 위해, 부동 소수점은 데이터 값의 표현을 위해서 사용됩니다.
고정 소수점 방식에는 DECIMAL 또는 NUMERIC 키워드를 사용합니다. 이 키워드는 크기 표현란에, 정밀도와 스케일을 넣습니다.
DECIMAL(정밀도, 스케일)
정밀도(precision)은 총 자릿수를 의미하고, 스케일(scale)은 소수점 자릿수를 의미합니다. 만약 DECIMAL(3, 1)과 같은 표현식이 온다면 해당 컬럼의 표현가능한 고정 소수점 수는 -99.9 ~ 99.9가 됩니다.
부동 소수점 방식에는 FLOAT와 DOUBLE이 사용됩니다. 부동 소수점에는 단정도 형식(single-precision)과 배정도 형식(double-precision)이 존재합니다. 부동 소수점 방식은 다음과 같이 사용하고, 표시한 정밀도에 따라서, FLOAT, DOUBLE이 자동 선택됩니다.
FLOAT(정밀도)
단정도 형식은 FLOAT 키워드가 선택됩니다. FLOAT는 0~23 사이의 정밀도를 가지며, 4 byte 크기를 갖습니다.
배정도 형식은 DOUBLE 키워드가 선택됩니다. DOUBLE은 0~53사이의 정밀도를 가지며, 8 byte 크기를 갖습니다.
3. 비트
비트는 0/1의 binary 값을 저장하는 타입입니다. 비트 타입에는 1 ~ 64 비트의 범위가 올 수 있으며, 생략시 기본값인 1이 적용됩니다.
BIT(비트수)
비트는 지정된 비트수보다 적은 크기의 값이 들어가면 자동으로 앞을 0으로 채워줍니다. BIT(4)의 컬럼에 01이라는 값을 넣으면 자동으로 0001로 변환되어 저장됩니다.