728x90
회사에서 사용하는 HeidiSQL과 MariaDB로 데이터를 직접 만들어보라고 사수님께 제안받아서, 햇병아리 FE 개발자인 나는 얼떨결에 백엔드 공부를 시작하게 되었다. 앞서 API로 만든 프로배구팀 선수명단 JSON 데이터를 HeidiSQL로 DB화했고, 이후에는 개인적으로 관심이 있는 다른 2개 구단의 데이터까지 DB화했다. HeidiSQL로 테이블을 만들면서 데이터 타입이 각각 어떤 의미인지 궁금해져서 정리해보는 글.✍
SQL 데이터 타입
정수형 (Integer Types)
말 그대로 정수값을 저장하는 데이터. 음수 부호가 있는 경우와 없는 경우에 저장 가능한 값이 다르다.
TINYINT | 매우 작은 정수 부호 있는 경우 -128 ~ 127 부호 없는 경우 0 ~ 255 |
SMALLINT | 작은 정수 부호 있는 경우 -32,768 ~ 32,767 부호 없는 경우 0 ~ 65,535 |
MEDIUMINT | 중간 크기의 정수 부호 있는 경우 -8,388,608 ~ 8,388,607 부호 없는 경우 0 ~ 16,777,215 |
INT | 일반적인 정수형 부호 있는 경우 -2,147,483,648 ~ 2,147,483,647 부호 없는 경우 0 ~ 4,294,967,295 |
BIGINT | 매우 큰 정수형 부호 있는 경우 -2^63 ~ 2^63-1 부호 없는 경우 0 ~ 2^64-1 |
BIT | 비트로 표현되는 데이터. 예를 들어 논리적 TRUE(1) / FALSE(0) 값을 저장할 때 사용. |
실수형 (Floating Point Types)
소수점을 포함한 값들을 저장할 수 있는 데이터
FLOAT | 단정밀도 부동 소수점 (4바이트) 소수점 이하의 정확도가 상대적으로 낮고, 7자리 정도의 십진수 정밀도를 가진다. 온도, 거리처럼 작은 소수점 값이나 계산의 정확도가 크게 중요하지 않은 경우에 사용한다. |
DOUBLE | 배정밀도 부동 소수점 (8바이트) 소수점 이하의 정확도가 높고, 15자리 정도의 십진수 정밀도를 가진다. 과학적 계산이나 천문학적인 날짜 등 정확한 계산이 중요한 경우에 사용한다. |
DECIMAL | 정밀한 소수점을 위해 사용하는 고정 소수점 수. 저장할 숫자의 전체 자릿수와 소수점 이하 자릿수를 설정할 수 있다. 예를 들어 DECIMAL(10, 2)는 최대 10자리 숫자 중 2자리는 소수점 이하로 저장할 수 있다는 의미. 가격, 세금 계산처럼 소수점 오차가 없어야 하는 경우에 사용한다. |
텍스트 (Text Types)
문자열을 저장할 수 있는 데이터 타입. 가변 길이와 고정 길이로 나눌 수 있다.
VARCHAR | 가변 길이 문자열, 최대 길이를 설정해야 한다. 예를 들어 VARCHAR(10)으로 설정하면 공백없이 문자열 길이만큼의 공간만 차지한다. 길이가 일정하지 않은 짧은 텍스트(이름, 주소 등)에 적합하다. |
CHAR | 고정 길이 문자열, 설정한 길이에 맞춰 공간을 항상 차지한다. 예를 들어 CHAR(10)으로 설정하면 글자가 5개만 있어도 공백을 채워서 10자리를 만든다. 짧은 문자열이나 고정된 길이 데이터에 유리하다. |
TINYTEXT | 가변 길이 문자열, 내용의 길이만큼만 차지한다. 최대 255자 저장. |
TEXT | 가변 길이 문자열, 내용의 길이만큼만 차지한다. 설명이나 본문 같은 긴 텍스트 데이터에 유리하다. 최대 65,535자까지 저장 가능 |
MEDIUMTEXT | 가변 길이 문자열, 내용의 길이만큼만 차지한다. 최대 16,777,215자 저장. |
LONGTEXT | 가변 길이 문자열, 내용의 길이만큼만 차지한다. 최대 4GB 저장. |
JSON | JSON 형식의 구조화된 데이터를 저장. |
UUID | Universally Unique Identifier. 중복되지 않는 특별한 코드를 만드는 방식. 16바이트 크기의 숫자이고, 36자리 문자 조합으로 표현된다. 주로 고유한 ID나 식별키로서 사용자 ID나 주문번호를 중복없이 생성하고 싶은 경우에 사용한다. |
바이너리 (Binary Types)
파일, 이미지, 동영상과 같은 "바이너리 데이터"를 저장할 때 사용한다. 바이너리 데이터는 텍스트가 아닌 파일 데이터(0과 1로 이루어진 데이터).
BINARY | 고정 길이 바이너리 데이터. 정해진 길이를 갖기 때문에 지정해놓은 데이터의 크기에 맞춰 공간을 항상 차지한다. 예를 들어, BINARY(10)으로 설정하면 데이터가 5바이트여도 항상 10바이트를 사용해 저장하고, 남는 공간은 공백으로 채운다. 해시값, 암호화된 데이터처럼 고정된 크기의 이진 데이터 저장에 사용한다. |
VARBINARY | 가변 길이 바이너리 데이터. 저장하는 데이터의 크기에 따라 필요한 만큼의 공간만 사용한다. 예를 들어, VARBINARY(10)으로 설정하면 최대 10바이트까지 저장할 수 있지만 실제 저장되는 데이터의 크기만큼만 차지한다. |
TINYBLOB | 작은 바이너리 객체 (최대 255바이트). |
BLOB | Binary Large Object. 큰 바이너리 객체 (최대 65,535바이트). |
MEDIUMBLOB | 중간 크기 바이너리 데이터 (최대 16MB). |
LONGBLOB | 대용량 바이너리 데이터 (최대 4GB). |
시간형 (Date and Time Types)
날짜와 시간을 표현할 때 사용하는 데이터 타입.
DATE | 연월일 정보 (YYYY-MM-DD 형식). |
TIME | 시분초 정보 (HH:MM 형식). |
YEAR | 연도 정보 (YYYY 형식). |
DATETIME | 날짜와 시간 정보 (YYYY-MM-DD HH:MM 형식). |
TIMESTAMP | 날짜와 시간 정보 + UTC로 변환된 시간. 일반적으로 데이터 생성 또는 업데이트 시의 타임스탬프를 기록할 때 사용한다. |
공간/기하학형 (Spatial/Geometric Types)
위치 기반 서비스나 지도 앱 같은 곳에서, 위치나 지형 관련 데이터를 다룰 때 사용한다.
POINT | 특정 위치를 나타내는 점(좌표) 데이터. |
LINESTRING | 두 지점을 연결한 직선 또는 곡선 데이터. |
POLYGON | 다각형 데이터, 구역을 나타내는 닫힌 영역. 도시 경계, 건물 영역, 국가 경계 등을 지정할 때 사용한다. |
GEOMETRY | 여러 종류의 기하학적 형태를 저장할 수 있는 타입. |
MULTIPOINT | 여러 점(좌표)을 나타내는 데이터. |
MULTILINESTRING | 여러 선을 포함하는 데이터. |
MULTIPOLYGON | 여러 다각형을 포함하는 데이터. |
GEOMETRYCOLLECTION | 여러 점, 선, 다각형 데이터를 함께 관리할 수 있다. 예를 들어, 공원의 경계선과 그 안에 있는 산택로를 하나의 데이터로 묶어 표현할 수 있다. |
기타 (Other Types)
특정한 목적에 맞는 데이터 유형.
UNKNOWN | 알 수 없는 유형. 어떤 데이터 유형인지 정확히 정의되지 않은 경우. |
ENUM | 열거형, 미리 정의된 값 중 하나를 선택할 수 있는 데이터 유형. 예를 들어, 성별을 저장할 때 ENUM('남', '여')로 설정하면, '남' 또는 '여'만 저장할 수 있다. |
SET | 여러 값의 조합을 허용하는 데이터 유형. 미리 정의된 여러 값 중에서 여러 개를 동시에 선택할 수 있다. 예를 들어, 취미를 저장할 때 SET('축구', '농구', '독서')로 설정하면 '축구'와 '독서' 동시 저장 가능. |
728x90
'💾 Backend > DB, SQL' 카테고리의 다른 글
MySQL, PostgreSQL 차이 (1) | 2024.12.10 |
---|---|
MySQL 권한 에러, DB 이관하기 (0) | 2024.10.31 |
SQL 기본 개념과 용어 정리 (1) | 2024.10.29 |
MySQL 기본 개념, MariaDB와 비교 (1) | 2024.10.28 |
MariaDB, HeidiSQL 기본 개념과 설치 방법 (1) | 2024.10.24 |