Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 "서명되지 않은"은 무엇을 의미하며 언제 사용해야 합니까?

<시간/>

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)