MySQL에서 사용하는 **데이터 타입(Data Type)**은 데이터를 효율적으로 저장하고 처리하기 위해 매우 중요합니다.
아래에 전체 타입을 분류별로 정리하고, 각 타입의 세부 설명과 예시도 함께 제공할게요.
1. 정수 타입 (Integer Types)
타입 | 크기(바이트) | 범위(signed 기준) | 설명 |
TINYINT | 1 | -128 ~ 127 | 매우 작은 정수 |
SMALLINT | 2 | -32,768 ~ 32,767 | 작은 정수 |
MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 | 중간 크기 정수 |
INT 또는 INTEGER | 4 | -2,147,483,648 ~ 2,147,483,647 | 일반적인 정수 |
BIGINT | 8 | -9경 ~ 9경 | 매우 큰 정수 |
- UNSIGNED 옵션 사용 시 범위가 0부터 시작
예: TINYINT UNSIGNED는 0 ~ 255
2. 실수/소수 타입 (Floating-Point / Fixed-Point Types)
타입 | 설명 | 예시 |
FLOAT(M,D) | 부동소수점, 약간 부정확 가능 (4바이트) | FLOAT(7,4) → 123.4567 |
DOUBLE(M,D) 또는 REAL | 더 높은 정밀도 (8바이트) | DOUBLE(10,2) → 12345678.90 |
DECIMAL(M,D) 또는 NUMERIC | 정확한 소수 계산, 금융계 추천 | DECIMAL(10,2) → 12345678.90 |
- M은 전체 자릿수, D는 소수점 이하 자릿수
3. 문자열 타입 (String Types)
타입 | 최대길이 | 설명 |
CHAR(N) | 고정 길이, 최대 255자 | 항상 N길이 저장, 빠름 |
VARCHAR(N) | 가변 길이, 최대 65,535 바이트 | 일반적으로 가장 많이 사용 |
TEXT 계열 | 매우 큰 문자열 저장용 |
타입 | 최대크기 | 사용예 |
TINYTEXT | 255자 | 짧은 설명 |
TEXT | 65,535자 | 일반 텍스트 |
MEDIUMTEXT | 16MB | 블로그 글, 문서 |
LONGTEXT | 4GB | 책, 대용량 문서 |
- 이진 문자열 (BLOB 계열)
> TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB
> 이진 데이터 저장 (예: 이미지, 파일, 암호화된 값)
> TEXT와 구조는 같지만, 문자셋/정렬이 없음 (바이너리 저장)
4. 날짜 및 시간 타입 (Date and Time Types)
타입 | 형식 | 설명 |
DATE | 'YYYY-MM-DD' | 날짜 |
TIME | 'HH:MM:SS' | 시간 |
DATETIME | 'YYYY-MM-DD HH:MM:SS' | 날짜 + 시간 |
TIMESTAMP | 같은 형식 | 자동으로 현재 시간 저장 가능 |
YEAR | 'YYYY' | 연도 (1901 ~ 2155) |
- TIMESTAMP는 자동 생성/업데이트 필드에 자주 사용
5. 논리 타입 (Boolean)
CREATE TABLE test (
is_active BOOLEAN DEFAULT 1
);
- MySQL에는 BOOLEAN이 있지만 실제로는 **TINYINT(1)**으로 동작합니다.
- 0 = false, 1 = true
6. ENUM & SET 타입
CREATE TABLE users (
gender ENUM('male', 'female', 'other')
);
- 미리 정해진 값 중 하나만 선택할 수 있는 타입
- 저장 시 'male', 'female', 'other' 중 하나만 허용
CREATE TABLE users (
hobbies SET('reading', 'sports', 'music', 'movies')
);
- 여러 개의 선택지를 동시에 가질 수 있음 (최대 64개)
- 'reading,music' 같이 여러 값 저장 가능
** 부가 정리: 문자열 저장 용량 계산 **
CHAR/VARCHAR는 문자셋에 따라 바이트가 달라집니다.
- UTF-8 문자: 한 글자 = 최대 3~4 바이트
- VARCHAR(100) = 최대 300~400 바이트가 필요할 수 있음 (UTF-8 기준)
'MySQL(MariaDB)' 카테고리의 다른 글
트랜잭션(Transaction) 이란? (60) | 2025.07.17 |
---|---|
카테고리 구조(분류 체계)를 DB로 설계할 때 가장 일반적인 방법 (22) | 2025.07.16 |
MySQL의 가장 기본이자 중요한 개념인 CRUD 설명 (29) | 2025.07.09 |
MySQL 사용자 생성 및 권한 설정 (22) | 2025.07.08 |
DB(Database/데이터베이스)의 종류는? (42) | 2025.06.30 |