MySQL에서 UNSIGNED는 숫자형 데이터 타입에서 사용할 수 있는 속성으로, 음수를 허용하지 않고 0 이상의 값만 저장할 수 있도록 함
(정수형 데이터는 기본적으로 SIGNED로 선언되어 음수 값 삽입이 가능)
ex)
mysql에서 int형의 범위는 음수를 포함하여 -2147483648 ~ 2147483647이다
이때 unsigned를 설정하면 범위가 0 ~ 4294967295 가 된다
-- 테이블 생성 시
CREATE TABLE 'tb_test' (
test_no int(11) UNSIGNED NOT NULL AUTO_INCREMENT
)
-- 기존 기존 컬럼 수정시
ALTER TABLE tb_test
MODIFY COLUMN age TINYINT UNSIGNED NOT NULL;
| 데이터 타입 | 저장 공간 | SIGNED | UNSIGNED |
|---|---|---|---|
| TINYINT | 1 바이트 | -128 ~ 127 | 0 ~ 255 |
| SMALLINT | 2 바이트 | -32,768 ~ 32,767 | 0 ~ 65,535 |
| MEDIUMINT | 3 바이트 | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 |
| INT (INTEGER) | 4 바이트 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 |
| BIGINT | 8 바이트 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 0 ~ 18,446,744,073,709,551,615 |
음수가 필요없는 컬럼
: AUTO_INCREMENT (ex. id, no) 컬럼, 음수가 의미 없는 데이터
더 많은 데이터를 저장해야 할 때
: 사용하지 않는 음수 범위를 양수 범위로 전환하여 더 많은 데이터를 저장할 수 있어 메모리 최적화 가능 가능