DB 데이터 타입 정리

유방현·2024년 10월 29일

MariaDB 데이터 타입 정리

1. 문자열 자료형

  • VARCHAR: 가변 길이 문자열
  • CHAR: 고정 길이 문자열
  • TEXT 계열: 대용량 텍스트
-- VARCHAR vs CHAR 예시
CREATE TABLE string_example (
    var_str VARCHAR(10),
    fixed_str CHAR(10)
);

INSERT INTO string_example VALUES ('Hello', 'Hello');

-- 결과
/*
var_str   | fixed_str     |
----------|---------------|
'Hello'   | 'Hello     ' | -- CHAR는 나머지를 공백으로 채움
(실제 저장 크기: 5바이트) | (항상 10바이트)
*/

2. 숫자 자료형

정수형

  • TINYINT: -128 ~ 127
  • SMALLINT: -32,768 ~ 32,767
  • INT: -21억 ~ 21억
  • BIGINT: -900경 ~ 900경
CREATE TABLE number_example (
    tiny TINYINT,
    small SMALLINT,
    normal INT,
    unsigned_int INT UNSIGNED
);

INSERT INTO number_example VALUES (127, 32767, 2147483647, 4294967295);

-- 결과
/*
tiny | small  | normal     | unsigned_int |
-----|--------|------------|--------------|
127  | 32767  | 2147483647| 4294967295   |
*/

실수형

  • FLOAT: 일반 실수
  • DOUBLE: 큰 실수
  • DECIMAL: 정확한 소수점 계산
CREATE TABLE float_example (
    price1 FLOAT(7,2),
    price2 DECIMAL(7,2)
);

INSERT INTO float_example VALUES (123.45, 123.45);

-- 결과
/*
price1  | price2  |
---------|---------|
123.45   | 123.45  | -- DECIMAL은 정확한 값 보장
*/

3. 날짜/시간 자료형

  • DATE: YYYY-MM-DD
  • TIME: HH:MM:SS
  • DATETIME: YYYY-MM-DD HH:MM:SS
CREATE TABLE date_example (
    date_col DATE,
    time_col TIME,
    datetime_col DATETIME
);

INSERT INTO date_example VALUES 
('2024-03-19', '14:30:00', '2024-03-19 14:30:00');

-- 결과
/*
date_col   | time_col | datetime_col         |
-----------|----------|---------------------|
2024-03-19 | 14:30:00 | 2024-03-19 14:30:00|
*/

4. 이진 자료형

  • BINARY: 고정 길이 이진
  • VARBINARY: 가변 길이 이진
  • BLOB 계열: 대용량 이진 데이터
CREATE TABLE binary_example (
    bin_data BINARY(5),
    var_bin_data VARBINARY(5)
);

INSERT INTO binary_example VALUES 
(UNHEX('AB'), UNHEX('AB'));

-- 결과
/*
bin_data     | var_bin_data |
-------------|--------------|
0xAB000000   | 0xAB        | -- BINARY는 나머지를 0으로 채움
*/

자주 사용되는 데이터 타입 선택 기준

  • 문자열:
    • 고정 길이 → CHAR
    • 가변 길이 → VARCHAR
    • 대용량 → TEXT
  • 숫자:
    • 일반 정수 → INT
    • 큰 정수 → BIGINT
    • 정확한 소수 계산 → DECIMAL
  • 날짜/시간:
    • 날짜만 → DATE
    • 날짜+시간 → DATETIME
    • 타임스탬프 필요 → TIMESTAMP

0개의 댓글