본문 바로가기
MySQL(MariaDB)

MySQL에서 사용하는 데이터 타입(Data Type) 정의

by 코딩박사 2025. 7. 21.
반응형

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 기준)
반응형