1. MySQL TINYINT란 무엇인가?
MySQL에서 TINYINT는 매우 작은 정수를 저장하는 데 사용되는 데이터 타입입니다. TINYINT는 1바이트(8비트)의 메모리를 차지하며, 부호가 있는 경우 -128부터 127까지, 부호가 없는 경우 0부터 255까지의 값을 저장할 수 있습니다. TINYINT는 주로 작은 숫자 값과 Boolean 플래그를 효율적으로 관리하기 위해 사용됩니다.
TINYINT의 특징
- 메모리 효율성 :
TINYINT는 1바이트만 사용하므로INT나BIGINT와 같은 다른 정수형에 비해 더 많은 메모리를 절약합니다. - 부호 있는 옵션과 부호 없는 옵션 : 부호가 있는 TINYINT는 음수 값을 처리할 수 있으며, 부호 없는 옵션을 사용하면 양의 최대 범위가 확대됩니다.
TINYINT 사용 예시
다음 예시에서는 작은 숫자 값과 플래그를 관리하기 위해 TINYINT 타입을 사용하여 테이블을 생성합니다.
CREATE TABLE user_status (
user_id INT PRIMARY KEY,
is_active TINYINT(1) NOT NULL DEFAULT 0
);
이 예시에서 is_active 컬럼은 TINYINT(1)으로 정의되며 사용자가 활성 상태인지 여부를 관리하는 데 사용됩니다. 값이 0이면 “비활성”, 1이면 “활성”을 의미합니다.
2. TINYINT의 실용적인 사용 사례
TINYINT는 작은 정수와 Boolean 값을 관리하기에 이상적인 데이터 타입입니다. 데이터베이스 성능을 최적화하고 저장소 사용량을 줄이기 위해 널리 사용됩니다.
TINYINT를 Boolean 값으로 사용하기
MySQL에는 전용 BOOLEAN 타입이 없기 때문에 TINYINT(1)을 Boolean 값을 관리하는 대체 용도로 흔히 사용합니다. 일반적으로 0은 “false”를, 1은 “true”를 나타냅니다. 이 방식은 플래그를 쉽게 관리할 수 있게 해줍니다.
UPDATE user_status SET is_active = NOT is_active WHERE user_id = 1;
이 예시에서는 지정된 사용자의 is_active 값을 토글합니다. 이를 통해 Boolean 값을 간단히 전환할 수 있습니다.
작은 숫자 값 관리
예를 들어, TINYINT는 제품 재고 수량과 같이 매우 작은 범위의 정수를 관리할 때도 효과적입니다. 제품 수가 255를 초과하지 않는다면 TINYINT UNSIGNED를 사용하여 부호 없는 숫자 범위 내에서 충분히 데이터를 관리할 수 있습니다.

3. TINYINT와 다른 정수형 비교
MySQL은 다양한 정수형을 제공하며, 그 중 TINYINT가 가장 작습니다. 반면 INT와 BIGINT는 훨씬 더 큰 값 범위를 저장할 수 있습니다. 아래는 TINYINT와 다른 주요 정수형 간의 차이점입니다.
INT와 TINYINT의 차이점
INT는 4바이트를 사용하며 -2147483648부터 2147483647까지의 값을 지원하는 반면, TINYINT는 1바이트만 사용하고 부호가 있는 경우 -128부터 127, 부호가 없는 경우 0부터 255까지의 값을 지원합니다. 따라서 TINYINT를 사용하면 적절한 범위 내에서 데이터를 효율적으로 관리하면서 메모리를 절약할 수 있습니다.
다른 작은 정수형과의 비교
TINYINT 외에도 MySQL은 SMALLINT(2바이트)와 MEDIUMINT(3바이트)와 같은 데이터 타입을 제공합니다. 각 타입의 바이트 크기에 따라 숫자 범위가 달라지므로 적절한 데이터 타입을 선택하는 것이 중요합니다.
4. 부호 있는 경우와 부호 없는 경우 선택
MySQL에서 TINYINT 타입은 부호 있거나 부호 없게 정의할 수 있습니다. 차이를 이해하고 적절히 선택하면 보다 효율적인 데이터 관리가 가능합니다.
부호 없는 TINYINT의 장점
부호 없는 TINYINT(TINYINT UNSIGNED)는 0부터 255까지의 값을 지원하므로 음수 값이 필요 없는 경우에 유용합니다. 예를 들어, 사용자 나이 또는 제품 수량과 같이 음수 값이 필요 없는 데이터를 저장할 때 UNSIGNED를 사용하면 사용 가능한 범위가 확대되어 보다 효율적인 데이터 관리가 가능합니다.
부호 있는 TINYINT의 장점
부호가 있는 TINYINT는 -128부터 127까지의 값을 지원하므로 음수 값이 필요한 경우에 적합합니다. 예를 들어, 온도와 같이 음수 값이 발생할 수 있는 데이터의 경우 부호 있는 옵션이 적절합니다.
5. TINYINT 사용 예시
다음은 데이터베이스 내에서 TINYINT를 사용하여 데이터를 관리하는 예시입니다. 예를 들어, 제품 수량을 관리할 때는 다음과 같이 테이블을 정의할 수 있습니다:
CREATE TABLE products (
product_id INT PRIMARY KEY,
quantity TINYINT UNSIGNED NOT NULL
);
이 예시에서는 제품 재고 quantity를 부호 없는 TINYINT로 관리하여 최대 255까지의 값을 허용합니다. 또한 NOT NULL을 지정함으로써 값이 항상 설정되도록 보장합니다.
TINYINT를 사용하여 사용자 상태 플래그를 간단하고 효율적으로 관리할 수도 있습니다. 특히 대량의 데이터를 처리할 때 TINYINT를 사용하면 전체 데이터베이스 성능을 향상시킬 수 있습니다.
6. 요약 및 모범 사례
TINYINT는 MySQL에서 가장 메모리 효율이 높은 데이터 타입 중 하나이며, 작은 정수와 플래그를 효율적으로 관리하는 데 이상적입니다. Boolean 값이나 작은 숫자 범위에 TINYINT를 사용하면 저장 공간 사용량과 데이터베이스 성능을 모두 최적화할 수 있습니다.


