[MySQL] MySQL 데이터 형식

테이블을 생성할때 속성마다 데이터 자료형을 지정해줄 수 있다. 이때 불필요한 크기의 자료형으로 지정해주는 것을 막기 위해 데이터 형식에 대해 공부해보겠다.

정수형

정수형은 정수 즉, 소수점이 없는 숫자에 사용됩니다.

데이터 형식 바이트 수 숫자 범위
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