IT story

MySQL에서 UNSIGNED 및 SIGNED INT를 언제 사용해야합니까?

hot-time 2020. 9. 9. 20:13
반응형

MySQL에서 UNSIGNED 및 SIGNED INT를 언제 사용해야합니까?


MySQL에서 UNSIGNED 및 SIGNED INT를 언제 사용해야합니까? 사용하는 것이 더 낫거나 이것은 단지 개인적인 선호입니까? 나는 이것을 이렇게 사용하는 것을 보았 기 때문에;

id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT

id INT(11) NOT NULL AUTO_INCREMENT

UNSIGNED양수 (또는 0) 만 저장합니다. 반면에 signed는 음수를 저장할 수 있습니다 (즉, 음수 부호 가있을 수 있음 ).

다음은 각 INTEGER유형이 저장할 수 있는 값 범위의 표입니다 .

MySQL INTEGER 유형 및 길이
출처 : http://dev.mysql.com/doc/refman/5.6/en/integer-types.html

UNSIGNED범위는 0~ n이고 부호있는 범위는 -n/2~ n/2입니다.

이 경우에는 AUTO_INCREMENTID 열이 있으므로 음수가 없습니다. 따라서 UNSIGNED. 사용하지 않는 경우 UNSIGNED에 대한 AUTO_INCREMENT열, 최대 가능한 값은 높은 절반이 될 것이다 (그리고 값 범위의 부정적인 절반이되지 않는 갈 것입니다).


사용 UNSIGNED음수가 아닌 정수합니다.


기본적으로를 UNSIGNED사용하면 음수가 필요하지 않음을 명시 적으로 지정하기 때문에 정수에 대해 두 배의 공간을 제공합니다 (보통 저장하는 값은 음수가 아니기 때문입니다).


나는 vipin cp에 동의하지 않습니다 .

사실은 첫 번째 비트가 부호를 나타내는 데 사용된다는 것입니다. 그러나 1 은 음수이고 0 은 양수입니다. 더 많은 음수 값은 다른 방식으로 코딩됩니다 (2의 보수). TINYINT의 예 :

The sign bit
|
1000 0000b = -128d  
...  
1111 1101b = -3d  
1111 1110b = -2d  
1111 1111b = -1d  

0000 0000b = 0d  
0000 0001b = 1d  
0000 0010b = 2d  
...  
0111 1111b = 127d  

나는에 추가하고 싶은 한 가지 signed int인은 default value in mysql, 1 bit표시하는 데 사용됩니다 sign. -1 for negative and 0 for positive.따라서 애플리케이션이 양수 값만 삽입하는 경우 unsigned를 지정하는 것이 좋습니다.


저장할 번호의 유형을 알고 있다면 그에 따라 선택할 수 있습니다. 이 경우에는 절대 음수가 될 수없는 'id'가 있습니다. 따라서 unsigned int를 사용할 수 있습니다. 부호있는 정수 범위 : -n / 2 ~ + n / 2 부호없는 정수 범위 : 0 ~ n 따라서 사용할 수있는 양수 수의 두 배가됩니다. 그에 따라 선택하십시오.


음수가 아닌 분, 시간 또는 초 형식으로 (예 :) UNSIGNED을 저장하는 것이 가장 좋은 옵션 이라고 생각합니다 time_duration.resolved_call_time = resolved_time(DateTime)-creation_time(DateTime)

참고 URL : https://stackoverflow.com/questions/11515594/when-should-i-use-unsigned-and-signed-int-in-mysql

반응형