수수한 코딩세상

[DB] MySQL 데이터 타입 본문

수수한 코딩세상/DB

[DB] MySQL 데이터 타입

수수한 코딩열공생 2024. 4. 24. 22:00

테이블에 데이터를 삽입하기 전 Column을 생성해 줄 때 데이터 타입(Data type)을 설정해 주어야 합니다.

Data type은 데이터의 종류를 말합니다. 데이터 타입에는 문자, 숫자, 시간, 참과 거짓 등 여러 종류가 있습니다.

이번에는 다양한 데이터 타입에 대해 정리해 보았습니다.

 

1. 문자

Data type 저장가능 문자수 특징
CHAR 0 ~ 255자 CHAR(숫자)로 최대용량 지정
VARCHAR 0 ~ 65535자 VARCHAR(숫자)로 최대용량 지정
TEXT 0 ~ 65535자 -
TINYTEXT 0 ~ 255자 -
MEDIUMTEXT 0 ~ 1600만자 -
LONGTEXT 0 ~ 42억자 -

 

데이터 타입을 문자로 설정하고 싶으시면 이 중에서 고르면 됩니다.

주로 VARCHAR 을 많이 사용하여 문자를 저장합니다.

가벼운 문자가 아닌 긴 글을 저장하고 싶을 때는 BLOB 형태로 저장되는 MEDIUMTEXT를 사용합니다. 

BLOB
BLOB(Binary large Object)은 데이터 베이스 관리 시스템에서 하나의 엔티티로 저장되는 바이너리(이진) 형태로 큰 객체를 저장할 때 사용하는 데이터 형태입니다.
VARCHAR & CHAR 차이
- VARCHAR은 variable character field 로 가변형 문자열 입니다. VARCHAR(100)으로 설정해 놓은 경우 문자를 10자만 저장한다 해도 하드디스크 용량을 100만큼 차지하는 게 아니라 실제 저장된 문자 10자 + 1byte만큼만 용량을 차지합니다. (but, 글자가 256자를 넘기면 +2byte입니다)
- CHAR은 character로 고정형 문자열 입니다. CHAR(100)으로 설정해 놓은 경우 10자만 저장한다 해도 하드디스크 용량은 100만큼 차지합니다.
항상 설정한 크기의 하드디스크 용량을 차지하고 있기 때문에 성능상 이점이 있지만 그런 경우는 드물어서 잘 사용하지 않는 편입니다. 

 

2. 숫자

Data type 저장가능한 숫자 특징
SMALLINT -32768 ~ 32767 -
MEDIUMINT -838만 ~838만 -
INT -21억 ~ 21억 -
BIGINT -900경 ~ 900경 -
FLOAT -10^38 ~ 10^38 소수점 7자리까지 저장가능 (오차 발생함)
DOUBLE -10^308 ~ 10^308 소수점 14자리까지 저장가능 (오차 발생함)
DECIMAL 소수점 30자리 포함 최대 65자리 오차없이 소수점 저장가능

 

숫자를 저장할 때에는 예상보다 더 큰 숫자가 저장될 상황을 고려하여 데이터 타입을 선정해야 합니다.

FLOAT, BOUBLE, DECIMAL은 소수를 저장 가능합니다. 하지만 FLOAT, DOUBLE은 정확도가 조금 낮다는 점을 유의해야 합니다.

양의 숫자만 저장하고 싶을 때
양의 숫자만 저장하여 만들고 싶을 때는 Column을 만들 때 unsigned 옵션을 설정해 주면 됩니다.
그렇게 되면 예를 들어 SMALLINT의 경우 0~65535까지 저장 가능합니다.
숫자의 크기와 DB 용량 관계
저장하는 숫자가 크다 해서 DB용량을 많이 차지하지는 않습니다.
INT의 경우 데이터 1개당 4byte, SMALLINT는 2byte, BIGINT는 8byte의 용량을 차지합니다.

 

3. 시간

Data type 저장가능 시간 특징
DATE 1000년 ~ 9999년 YYYY-MM-DD 형식으로 날짜 저장
TIME -839 ~ +839시간 HH:MM:SS 형식으로 시간 저장
DATETIME 1000년 ~ 9999년 YYYY-MM-DD HH:MM:SS 형식으로 날짜와 시간 저장
TIMESTAMP 1970년 ~ 2038년 YYYY-MM-DD HH:MM:SS 형식으로 날짜와 시간 저장

 

날짜와 시간을 저장할 때 주로 DATETIME을 자주 씁니다. TIMESTAMP는 DATETIME과 비슷하지만 MySQL에서는 2038년까지밖에 저장되지 않아 잘 사용하지 않습니다.

 

4. 참과 거짓

Data type 저장가능 문자수 특징
BOOLEAN 1 참(1), 거짓(0)으로 저장됨

 

 

이러한 Data type 외에도 JSON 형식은 JSON에 저장하고, 영상, 사진 같은 바이너리 데이터는 BLOB에 저장합니다. 

 

대체적으로 데이터 타입은 비슷하지만 DBMS 종류마다 저장하는 데이터의 타입이 다르기 때문에 자신이 사용하는 DBMS의 데이터 타입을 꼭 확인하고 테이블을 만드시길 바랍니다.

 


Reference

해당 글은 애플코딩님의 강의를 보고 정리한 내용입니다.

https://codingapple.com/course/sql-and-database/

 

한 번에 끝내는 SQL & Database - 코딩애플 온라인 강좌

SQL은 관계형 데이터베이스에서 데이터를 입출력할 때 사용하는 언어입니다.  관계형 데이터베이스를 다루는 곳에서 백엔드 개발 잘하고 싶다면 SQL을 잘 알아두도록 합시다.  실은 SQL을 개발자

codingapple.com