MySQL의 "unsigned"는 데이터 유형입니다. 모든 열에 unsigned를 쓸 때마다 음수를 삽입할 수 없습니다. 매우 큰 숫자에 대해 unsigned 유형을 사용할 수 있다고 가정합니다.
unsigned int의 최대 범위는 4294967295입니다.
Note: If you insert negative value you will get a MySQL error.
다음은 서명되지 않은 유형의 예제 데모입니다. 먼저 "unsigned" 열이 있는 테이블을 생성해 보겠습니다. 다음은 테이블을 생성하는 쿼리입니다 -
mysql> create table UnsignedDemoWithPositiveValue -> ( -> Distance int unsigned -> ); Query OK, 0 rows affected (0.86 sec)
부호 없는 4294967295로 상위 값을 삽입하려고 하면 값이 범위를 벗어났기 때문에 오류가 발생합니다.
범위를 벗어난 값을 삽입하는 중입니다.
mysql> insert into UnsignedDemoWithPositiveValue values(4294967296); ERROR 1264 (22003): Out of range value for column 'Distance' at row 1
위의 예에서는 4294967296을 삽입했는데 범위를 벗어나서 오류가 발생합니다.
이제 테이블에 다른 값 4294967295를 삽입합니다.
mysql> insert into UnsignedDemoWithPositiveValue values(4294967295); Query OK, 1 row affected (0.30 sec)
위와 같이 쿼리가 성공적으로 실행된 것을 확인할 수 있습니다.
이제 다른 예를 보겠습니다. 음수 레코드를 삽입하면 다음 오류가 표시될 수 있습니다. -
mysql> insert into UnsignedDemoWithPositiveValue values(-124); ERROR 1264 (22003): Out of range value for column 'Distance' at row 1
이제 값이 124인 양수 값만 삽입하겠습니다. 쿼리는 다음과 같습니다. -
mysql> insert into UnsignedDemoWithPositiveValue values(124); Query OK, 1 row affected (0.86 sec)
위에서 볼 수 있듯이 쿼리가 성공적으로 실행되었습니다.
select 문을 사용하여 레코드를 표시해 보겠습니다. 쿼리는 다음과 같습니다 -
mysql> select *from UnsignedDemoWithPositiveValue;
다음은 출력입니다 -
+------------+ | Distance | +------------+ | 4294967295 | | 124 | +------------+ 2 rows in set (0.00 sec)