이 글은 MySQL 숫자 데이터 타입 개념, 자주 쓰는 숫자 데이터 타입 추천과 설명을 간단히 정리한 글입니다.
MySQL 데이터 타입
데이터 타입은 종류별 데이터 저장 공간이 다르며, 작을수록 CPU 소비가 줄고 더 빠릅니다.
하지만 무조건 가장 작다고 좋거나, 가장 크다고 나쁜 것은 아닙니다.
데이터 입력 범위를 고려한 적정 크기의 타입 사용이 가장 좋습니다.
데이터는 숫자, 문자, 영상, 그림 등등 다양한 타입으로 존재합니다.
그중 MySQL에서 자주 쓰는 기본 데이터 타입은 숫자, 문자, 날짜(시간)입니다.
아이디 | 이름 | 가입일 |
3891 | 김나나 | 2023-01-01 |
20013 | 한나라 | 2013-02-02 |
MySQL 숫자 데이터
MySQL 숫자 데이터는 소수점 사용 가능 여부에 따라 정수와 실수 타입으로 분류됩니다.
정수(소수점X) | |
양의 정수(+, 자연수) | 1, 29, 54, 172, +2, +88... |
0 | |
음의 정수(-) | -1, -29, -54, -172, -2, -88... |
실수(소수점O, 굉장히 큰 수) |
-8.4, 13.5, -200.42, 5238.833.... |
-3.4141242112312313, 10.68849123678*10^10... |
정수 데이터 타입(INT, INTEGER)
정수 타입은 음수 사용 여부에 따라 signed와 unsigned로 분류됩니다.
- signed: 음수~양수 입력 모두 가능합니다.
- unsigned: 0~양수 입력만 가능하지만 signed보다 더 큰 수를 입력할 수 있습니다.
정수 타입 | 저장 공간 | 입력 가능 수 범위 signed | 입력 가능 수 범위 unsigned |
INT | 4Byte | -2147483648 ~ +2147483647 (약 ±21억) |
0 ~ 4294967295 |
BIGINT | 8Byte | -9223372036854775808 ~ +9223372036854775807 (약 ±900경) |
0 ~ 18446744073709551615 |
TINYINT | 1Byte | -128 ~ +127 | 0 ~ 255 |
SMALLINT | 2Byte | -32768 ~ +32767 | 0 ~ 65535 |
MEDIUMINT | 3Byte | -8388608 ~ +8388607 (약 ±838만) |
0 ~ 16777215 |
앞서 언급했듯 저장 공간과 용이성 등을 고려하면, 정수 타입 중 INT를 자주 씁니다.
더 큰 숫자를 다루면 BIGINT도 씁니다.
*정수 타입 관련 글 추천 MySQL 금액 타입(INT), 숫자 천 단위 콤마 찍기 FORMAT 함수 예시
정수 타입 사용 시 INT(N), BIGINT(N)처럼 입력할 수 있습니다.
- N: 자릿수, ZEROFILL 옵션 선택(=unsigned) 시 제기능, ex. INT(3)=002, INT(5)=00342
- ZEROFILL: 자릿수를 0으로 채우는 기능, ex. zerofill 설정 x = 1, zerofill 설정 o = 01, 001...
실수 데이터 타입
실수 타입은 소수와 더불어, BIGINT를 넘어서는 굉장히 큰 수까지 다룹니다.
또한 소수점 표현에 있어, 고정 소수점과 부동 소수점으로 분류됩니다.
- 고정 소수점(fixed-point types): 참값으로, 정확한 소수점 값을 나타냅니다.
- 부동 소수점(floating-point types): 근삿값이기에 다소 부정확한 소수 값을 나타냅니다.
하지만 MySQL에서 "실수 타입(M,D)"으로 입력한다면, 부동 소수점 타입을 고정 소수점 타입처럼 사용할 수도 있습니다.
*M: 실수의 총 자릿수(소수점 아래 자리 수 포함), D: 소수점 아래 자릿수
*유효숫자: 숫자 정확도에 유의미한 수, 자릿수 표현하는 0은 제외(ex. 111=유효숫자 3개, 0.011=유효숫자 2개)
실수 타입 | 저장 공간 | 속성 |
DECIMAL | 가변 | 고정 소수점, 최대 65자리 입력 가능 |
DECIMAL(M,D) *D=0: 소수표현X ex. DECIMAL(4,1): +359.1, -123.5... ex. DECIMAL(3,0): +271, -120... |
||
FLOAT | 4Byte | 부동 소수점, 소수점 아래 7자리 |
FLOAT(M,D) | ||
DOUBLE | 8Byte | 부동 소수점, 소수점 아래 15자리 |
DOUBLE(M,D) |
FLOAT를 소수점 표현 시 자주 사용합니다.
DECIMAL(M,0)은 소수를 표현하지 않으므로, 정수타입처럼 사용할 수 있습니다.
그러나 저장 공간 등을 고려하면 INT, BIGINT 등을 사용하는 것이 좋습니다.
'SQL > MySQL' 카테고리의 다른 글
MySQL 서브 쿼리Subquery 기초 정리 (0) | 2023.09.22 |
---|---|
MySQL 날짜 함수 YEAR() 설명, 문법, 예시 (0) | 2023.09.20 |
MySQL 외부 조인(LEFT, RIGHT, FULL JOIN, UNION, UNION ALL) 문법 예시 (0) | 2023.09.15 |
MySQL 다중 내부 조인(INNER JOIN 여러 개) 문법, 예시 (2) | 2023.09.14 |
MySQL INNER JOIN(내부 조인) 다양한 문법과 예시 (0) | 2023.09.12 |