테이블을 생성할때 속성마다 데이터 자료형을 지정해줄 수 있다. 이때 불필요한 크기의 자료형으로 지정해주는 것을 막기 위해 데이터 형식에 대해 공부해보겠다.
정수형
정수형은 정수 즉, 소수점이 없는 숫자에 사용됩니다.
데이터 형식 | 바이트 수 | 숫자 범위 |
---|---|---|
TINYINT | 1 | -128 ~ 127 |
SMALLINT | 2 | -32,768 ~ 32767 |
MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 |
INT | 4 | 약 -21억 ~ 약 21억 |
BIGINT | 8 | 약 -900경 ~ 약 900경 |
예를 들어 가장 큰키가 대략 289CM인데 해당 데이터를 삽입하기 위해 INT, BIGINT로 지정하는건 메모리의 낭비로 이어지게된다.
또한 정수형 타입은 - ~ + 를 나타내는데 이게 싫으면 UNSIGNED를 붙여서 양수데이터만 사용하는 방법도 있다.
실수형
소수점이 있는 숫자에 사용됩니다.
데이터 형식 | 바이트 수 | 숫자 범위 |
---|---|---|
FLOAT | 4 | -3.40E+38 ~ -1.17E-38 |
DOULBE | 8 | -1.22E-308 ~ 1.79E+308 |
DECIMAL(m,d) | 5 ~ 17 | -10^38+1 ~ 10^38-1 |
FLOAT은 소숫점 7자리까지 표현, DOUBLE은 소숫점 15자리까지 표현한다.DECIMAL과 나머지의 차이
- DECIMAL은 정확한 수치가 들어간다.
- FLOAT, DOUBLE은 근사치의 숫자가 들어간다.
문자형
문자형은 문자를 저장하는 데이터 형식이고, 주로 CHAR, VARCHAR를 사용합니다.
데이터 형식 | 바이트 수 |
---|---|
CHAR | 1 ~ 255 |
VARCHAR | 1 ~ 16383 |
BINARY | 1 ~ 255 |
VARBINARY | 1 ~ 16383 |
CHAR는 고정길이고, VARCHAR는 가변길이여서 문자열을 저장할 때 VARCHAR를 사용하는게 더 좋겠지만 내부적인 속도 측면에서는 CHAR가 더 빠르기에 문자열의 길이가 고정된 경우는 CHAR를 사용하는게 좋다.
대량의 데이터 형식
문자열은 16383바이트까지 커버를 해주고 더 큰 크기는 커버하지 못하기에 해당 형식을 사용합니다.
데이터 형식 | 바이트 수 |
---|---|
TEXT | 1 ~ 65535 |
LONGTEXT | 1 ~ 약 42억 |
BLOB | 1 ~ 65535 |
LONGBLOB | 1 ~ 약 42억 |
BLOB
이 생소한데 BLOB은 Binary Long Object로 이미지나 동영상등을 이진 데이터로 저장하는 형식입니다.
날짜형
데이터 형식 | 바이트 수 | 설명 |
---|---|---|
DATE | 3 | 날짜만 저장. YYYY-MM-DD 형식으로 사용 |
TIME | 3 | 시간만 저장. HH:MM:SS 형식으로 사용 |
DATETIME | 8 | 날짜 및 시간 저장. YYYY-MM-DD HH:mm:SS 형식으로 사용 |
'DB' 카테고리의 다른 글
Elasticsearch 테스트 (0) | 2024.01.10 |
---|---|
Elasticsearch Spring Boot에 적용해보기 (1) | 2024.01.10 |
Elasticsearch 란? (1) | 2024.01.10 |
[MySQL] SELECT 문 (0) | 2024.01.05 |
[MySQL] 계정 생성 및 권한 부여 (0) | 2024.01.05 |