자료형(Data Types)

숫자 데이터 형식(Numeric Types)

데이터 타입 설명 (저장 공간, 범위/특징, 사용 참고 사항)
TINYINT 1 byte. 범위: -128 ~ 127. ⚠️ 낮은 빈도. 0 또는 1과 같은 매우 작은 플래그 값에 제한적으로 사용됩니다.
SMALLINT 2 bytes. 범위: $-32,768$ ~ $32,767$. ⚠️ 낮은 빈도. 이 범위의 정수는 보통 INT를 선호하기 때문에 잘 쓰이지 않습니다.
MEDIUMINT 3 bytes. 범위: $-8,388,608$ ~ $8,388,607$. ⚠️ 낮은 빈도. $4$ 바이트인 INT에 비해 장점이 적습니다.
INT / INTEGER 4 bytes. 범위: 약 $-21$억 ~ $21$억. ✅ 가장 일반적. 대부분의 표준 정수 데이터에 권장되는 주력 형식입니다.
BIGINT 8 bytes. 특징: 매우 큰 정수. ✅ 높은 빈도. $21$억을 초과하는 대규모 ID 값이나 카운터에 필수적으로 사용됩니다.
FLOAT 4 bytes. 특징: 넓은 범위의 소수점 (근사값, 단정밀도). 오차가 허용되는 과학/통계 데이터에 사용됩니다.
DOUBLE 8 bytes. 특징: 더 넓은 범위의 소수점 (근사값, 배정밀도). FLOAT보다 높은 정밀도를 갖습니다.
DECIMAL (M, D) 가변 byte. 특징: 정확한 값 저장. $M$(총 자릿수), $D$(소수점 이하) 지정. ✅ 필수 사용처: 돈(금액), 환율 등 정밀 계산에 사용됩니다.
ENUM ('val1', '...') 1 또는 2 bytes. 특징: 컬럼이 가질 값들을 미리 정의하고 제한. 데이터 일관성 유지에 용이합니다.

문자열 데이터 형식(String Types)

데이터 타입 설명 (저장 공간, 특징, 용도 및 참고 사항) 사용빈도
CHAR (M) 고정 길이 문자열 (M 바이트). 특징: 지정된 길이 $M$이 $1$ 바이트에서 최대 $255$ 바이트까지 고정되어 저장되며, 짧더라도 남은 공간은 공백(Padding)으로 채워집니다. 용도: 데이터 길이가 항상 일정한 경우 (예: 전화번호, 우편번호, 2자리 국가 코드)에 성능이 빠릅니다.
VARCHAR (M) 가변 길이 문자열 (길이에 따라 다름 + $1$ 또는 $2$ 바이트). 특징: 실제로 저장된 데이터의 길이만큼만 공간을 사용하며, 길이를 저장하는 추가 바이트가 필요합니다. 최대 길이는 $65,535$ 바이트입니다. 용도: 대부분의 일반적인 텍스트 데이터(예: 이름, 주소, 제목)에 사용되는 가장 일반적인 문자열 형식입니다. 최상
TEXT 최대 $65,535$ 문자 (+$2$ 바이트). 특징: 긴 텍스트 블록을 저장하는 가변 길이 형식입니다. 용도: 웹 페이지 내용, 긴 기사, 대량의 본문 등 길이가 $255$자를 초과하는 일반적인 텍스트 데이터에 사용됩니다.
LONGTEXT 최대 $4,294,967,295$ 문자 (+$4$ 바이트). 특징: MySQL에서 저장할 수 있는 가장 긴 텍스트 형식입니다. 용도: 서버 로그 파일, 초대형 문서 등 최대 용량이 필요한 경우에 사용됩니다.
BLOB 최대 $65,535$ 바이트 (+$2$ 바이트). 특징: 일반적인 바이너리 데이터 저장에 사용됩니다. ⚠️
LONGBLOB 최대 $4,294,967,295$ 바이트 (+$4$ 바이트). 특징: MySQL에서 저장할 수 있는 가장 큰 바이너리 형식입니다. 최하 ⚠️
TINYTEXT 최대 $255$ 문자 (+$1$ 바이트). 특징: 짧은 텍스트 블록을 저장하는 가변 길이 형식입니다. 용도: 짧은 메모나 코멘트 등, 최대 길이가 VARCHAR(255)를 초과하지 않는 경우에 사용됩니다.
MEDIUMTEXT 최대 $16,777,215$ 문자 (+$3$ 바이트). 특징: 매우 긴 텍스트를 저장합니다. 용도: 방대한 분량의 문서, 책 내용 등 대용량 텍스트 저장에 사용됩니다.
ENUM 1 또는 2 bytes. 특징: 컬럼이 가질 값들을 미리 정의하고 그중 하나만 허용합니다. (앞서 설명됨) 용도: 데이터 일관성 유지 및 제한적인 선택지에 사용됩니다.
SET 1 ~ 8 bytes. 특징: 미리 정의된 값들 중에서 여러 개를 동시에 선택하여 저장할 수 있는 형식입니다. 용도: 여러 개의 옵션을 동시에 선택해야 할 때 (예: 취미 목록) 사용됩니다.

날짜/시간 데이터 형식(Date and Time Types)

데이터 타입 설명 (저장 공간, 형식, 범위, 특징 및 용도) 사용빈도
DATE 3 bytes. 형식: YYYY-MM-DD. 범위: '1000-01-01' ~ '9999-12-31'. 특징: 날짜만 저장합니다. (예: 생일)
DATETIME 8 bytes. 형식: YYYY-MM-DD HH:MM:SS. 범위: '1000-01-01' ~ '9999-12-31'. 특징: 날짜와 시간을 저장하며, 시간대(Time Zone)의 영향을 받지 않고 저장됩니다. 최상
TIMESTAMP 4 bytes. 형식: YYYY-MM-DD HH:MM:SS. 범위: '1970-01-01' ~ 약 '2038-01-19' (UTC). 특징: 시간대에 따라 자동 변환되어 저장되며, 레코드의 생성/수정 시간 기록에 유용합니다.
서버 시간에 따라 유동적으로 변하는 데이트 타입
Y2K38 문제가 있으므로 사용에는 주의 할 것
TIME 3 bytes. 형식: HH:MM:SS. 범위: '-838:59:59' ~ '838:59:59'. 특징: 시간이나 시간 간격을 저장하며, 범위가 넓습니다.
YEAR 1 byte. 형식: YYYY. 범위: 1901 ~ 2155. 특징: 연도만 저장하며, 4자리로 표시됩니다.

논리 데이터 형식(Boolean Types)

데이터 타입 특징 및 용도
BOOLEAN 또는 BOOL 1 byte ✅ 논리 데이터 타입의 별칭입니다. MySQL은 이를 **TINYINT(1)**로 처리합니다.

LOB 데이터 형식(Large Object Types)

데이터 타입 LOB 유형 최대 저장 용량 설명 (특징 및 용도)
TINYTEXT Character LOB $255$ 문자 짧은 텍스트 블록 (최대 $255$자) 저장.
TEXT Character LOB $65,535$ 문자 일반적인 길이의 긴 텍스트 (기사 본문 등) 저장.
MEDIUMTEXT Character LOB $16,777,215$ 문자 매우 긴 텍스트 (방대한 문서) 저장.
LONGTEXT Character LOB ($4,294,967,295$ 문자) MySQL에서 저장 가능한 가장 긴 텍스트 형식.
TINYBLOB Binary LOB $255$ 바이트 짧은 바이너리 데이터 저장.
BLOB Binary LOB $65,535$ 바이트 일반적인 바이너리 데이터 저장.
MEDIUMBLOB Binary LOB $16,777,215$ 바이트 대용량 바이너리 데이터 저장.
LONGBLOB Binary LOB ($4,294,967,295$ 바이트) MySQL에서 저장 가능한 가장 큰 바이너리 형식.