MySQL UNSIGNED란 무엇인가?
MySQL에서 UNSIGNED는 숫자 컬럼에 양수만 저장할 수 있도록 제한하는 속성입니다. UNSIGNED로 선언된 컬럼에는 음수 값을 입력할 수 없으며, 대신 동일한 데이터 타입이라도 더 큰 범위의 양수를 표현할 수 있다는 장점이 있습니다.
예를 들어 일반적인 INT 타입은 -2147483648부터 2147483647까지 저장할 수 있지만, INT UNSIGNED로 선언하면 0부터 4294967295까지 저장 가능합니다. 나이, 재고 수량, 가격처럼 음수가 존재하지 않는 데이터를 다룰 때 유용하게 활용됩니다.
UNSIGNED 컬럼을 가진 테이블 생성하기
UNSIGNED의 동작 방식을 이해하기 위해 실제 테이블을 만들어 보겠습니다. 테이블 생성에는 CREATE 명령어를 사용합니다.
mysql> CREATE table UnsignedDemo -> ( -> id int unsigned -> ); Query OK, 0 rows affected (0.61 sec)
위 예제에서 id 컬럼은 int unsigned로 선언되었기 때문에 양수 값만 저장할 수 있습니다.
양수 데이터 삽입하고 조회하기
이제 UNSIGNED 컬럼에 양수 값을 삽입해 보겠습니다. 데이터 입력은 INSERT 명령어로 수행합니다.
mysql> INSERT into UnsignedDemo values(124); Query OK, 1 row affected (0.09 sec) mysql> INSERT into UnsignedDemo values(78967); Query OK, 1 row affected (0.14 sec)
저장된 모든 레코드는 SELECT 명령어로 확인할 수 있습니다.
mysql> SELECT * from UnsignedDemo;
실행 결과는 다음과 같습니다.
+-------+ | id | +-------+ | 124 | | 78967 | +-------+ 2 rows in set (0.00 sec)
음수 입력 시 발생하는 오류
그렇다면 UNSIGNED 컬럼에 음수를 입력하면 어떻게 될까요? id 컬럼이 UNSIGNED로 선언되어 있기 때문에 아래와 같이 범위 초과(Out of range) 오류가 발생하며 데이터 삽입에 실패합니다.
mysql> INSERT into UnsignedDemo values(-124); ERROR 1264 (22003): Out of range value for column 'id' at row 1
정리
UNSIGNED는 음수 저장을 차단하고 양수 표현 범위를 넓혀주는 MySQL의 유용한 속성입니다. 다만 음수가 필요한 상황에서는 오류가 발생하므로, 컬럼 설계 시 해당 데이터에 음수 값이 존재할 가능성이 있는지 반드시 고려해야 합니다.