본문 바로가기
Dev. Handbook/SQL, Oracle, MariaDB

[MariaDB] Data Type, 데이터 타입, 데이터형, 자료형 10.3, 10.4

by breezyday 2022. 11. 9.

데이터베이스 설계를 위해서는 저장해야 할 정보의 자료를 분석하여 적절한 데이터 타입을 선택해야 합니다. 기본적인 데이터 타입은 크게 숫자형, 문자형, 날짜와 시간, 기타 특수 형으로 나눌 수 있습니다. 그중에서 숫자와 문자는 자주 사용하는 데이터 타입으로 데이터 타입 간에 지원하는 범위를 알고 있어야만 저장하려는 데이터 저장 범위에 맞게 사용할 수 있습니다.

 

MariaDB의 경우 숫자형과 문자형의 경우 아주 세부적으로 범위를 나누어 저장할 수 있도록 데이터 타입을 지원하고 있습니다. 가능하면 주요한 데이터형의 지원 범위는 기억해두는 것이 좋기에 정리하여 둡니다. 

 

자주 사용하는 데이터형의 경우 ● 와 함께 행의 글자에 색상을 변경하였습니다.

 


1. 숫자 데이터 타입 

데이터
형식
Bytes 범위 설명
BIT(N) N/8   1 ~ 64bit를 표현. b'0000' 형식으로 표현
TINYINT 1 -128 ~ 127 정수
SMALLINT  2 -32,768 ~  
    32,767
정수
MEDIUMINT 3 -8,388,608 ~ 
    8,388,607
정수
● INT 
INTEGER
4 -21억 ~ 21억 정수
● BIGINT 8 -900경 ~ 900경 정수
● FLOAT 4 -3.40E+38 ~  
   -1.17E-38
소수점 아래 7자리까지 표현
근사치의 숫자를 저장, 큰 숫자 저장
● DOUBLE
REAL
8 -1.22E-308 ~ 
   1.79E+308
소수점 아래 15자리까지 표현
근사치의 숫자를 저장, 큰 숫자 저장
● DECIMAL(m, [d])
NUMERIC(m, [d])
5~17 -10e38+1 ~ 
   10e38-1
전체 자릿수(m)와 소수점 이하 자릿수(d)를 가진 숫자형
정확한 수치를 저장
ex) decimal(5,2) 전체 자릿수 5자리, 그 중 소수점 이하를 2자리로 표현

 

소수점이 들어간 실수를 저장하려면 되도록 DECIMAL을 사용하는 것이 바람직하다.

부호 없는 정수를 지원, UNSIGNED  키워드를 앞에 붙여주면 된다.

- TINYINT : 0 ~ 255

- SMALLINT : 0 ~ 65,535

- MIDIUMINT : 0 ~ 16,777,215

- INT : 0 ~ 약 42억

- BIGINT : 0 ~ 약 108경 

- FLOAT, DOUBLE, DECIMAL도 UNSINGED를 지원하지만 잘 사용되지 않는다.

 

2. 문자 데이터 타입

데이터
형식
구분 Bytes 설명
● CHAR(n)   1~255 고정길이 문자형
n을 1부터 255까지 지정
CHAR만 표기하면 CHAR(1)과 동일
● VARCHAR(n)   1~65535 가변길이 문자형
n은 1부터 65535까지 지정
BINARY(n)   1~255 고정길이의 이진 데이터 값
VARBINARY(n)   1~255 가변길이의 이진 데이터 값
TEXT 형식 TINYTEXT 1~255 255 크기의 TEXT 데이터 값
  TEXT 1~65535 N 크기의 TEXT 데이터 값
  MEDIUMTEXT 1 ~
16777215
16,777,215 크기의 TEXT 데이터 값
  ● LONGTEXT 1 ~ 
4294967295
최대 4GB 크기의 TEXT 데이터 값
BLOB 형식 TINEBLOB 1~255 255 크기의 BLOB데이터 값
  BLOB 1~65535 N 크기의 BLOB데이터 값
  MEDIUMBLOB 1~
16777215
16,777,215 크기의 BLOB 데이터 값
  ● LONGBLOB 1 ~ 
4294967295
최대 4GB 크기의 BLOB 데이터 값
ENUM(값들...)   1 or 2 최대 65535개의 열거형 데이터 값
SET(값들...)   1,2,3,4,8 최대 64개의 서로 다른 데이터 값

 

CHAR 형고정길이 문자형으로 자릿수가 고정되어 있다.

- CHAR(100)에 'ABC'를 저장하면 100 Bytes를 확보하고 3자리만 사용한 다음 나머지 97 자리는 낭비하게 된다.

- CHAR 형은 INSERT/UPDATE에 일반적으로 더 좋은 성능을 발휘한다.

 

LONGTEXT, LONGBLOB

- MariaDB에서는 LOB(Large OBject :  대량의 데이터)를 LONGTEXT와 LONGBLOB로 지원한다.

- 약 4GB 크기의 파일을 하나의 데이터로 저장할 수 있다.

- 텍스트 타입의 데이터는 LONGTEXT를 사용한다

- 사진, 동영상과 같은 바이너리 파일은 LONGBLOB를 사용한다.

 

MariaDB의 문자 세트(Character Set)
- 기본적으로 CHAR, VARCHAR모두 UTF-8에서 영문, 한글 등에 따라서 내부적으로 저장 크기가 달라진다.
-  사용자 입장에서 CHAR(100)영문, 한글 구분 없이 100글자를 저장하므로 내부적인 저장 크기는 신경 쓸 필요가 없다.

 

3. 날짜와 시간 데이터 타입

데이터
형식
Bytes 설명
● DATE 3 1001-01-01 ~ 9999-12-31까지 저장됨.
날짜 형식만 사용.
'YYYY-MM-DD'형식으로 사용.
TIME 3 -838:59:59.000000 ~ 838:59:59.000000까지 저장.
'HH:MM:SS'형식으로 사용.
● DATETIME 8 1001-01-01 00:00:00 ~ 9999-12-31 23:59:59까지 저장.
'YYYY-MM-DD HH:MM:SS'형식으로 사용.
TIMESTAMP 4 1001-01-01 00:00:00 ~ 9999-12-31 23:59:59까지 저장.
'YYYY-MM-DD HH:MM:SS'형식으로 사용.
time_zone 시스템 변수와 관련이 있으며 UTC 시간대로 변환하여 저장.
YEAR 1 1901~2155까지 저장
'YYYY'형식으로 사용

 

4. 기타 데이터 타입

데이터
형식
Bytes 설명
GEOMETRY N/A 공간 데이터 형식으로 선, 점 및 다각형 같은 공간 데이터 객체를 저장하고 조작.
JSON 8 JSON (JavaScript Object Notiation) 문서를 저장
MariaDB 10.2.7 버전 부터 지원

 

 

 

댓글