mysql을 사용하다보면 Unsigned라는 옵션이 있습니다.
왜 사용할까요?
먼저 signed?
부호가 있다는 뜻으로 처음 C언어에서 사용되는 데이터 표현 방식입니다.
int 자료형이 –2,147,483,648 ~ 2,147,483,647를 표현할 수 있는데,
int는 4바이트 만큼 차지하는 자료형이므로 바이트가 8개의 비트이니 int는 32비트 자료형입니다.
따라서
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
int가 차지하는 32개 비트 중에서 가장 끝에 자리한 비트 하나는 부호를 담당하는 MSB입니다.
이 비트가 0일 경우 양의 정수가 되고 1일 경우 음의정수가 됩니다.
따라서 이 MSB를 제외한 31비트는 2의 31제곱까지 값의 범위를 나타낼수 있습니다.
unsigned
자료형에 unsigned가 붙게되면 부호가 없다는 뜻인데, 즉 위에서 1일경우 음의정수이고 0일 경우 양의 정수이기 때문에 unsigned 자료형은 32비트를 전부 양의 정수(절대값)을 나타내는 데 사용합니다.
2의 32제곱이 unsigned int의 최대값이 됩니다!
0~ 4,294,967,295
그래서
여기까지 보셨으면 어느정도 감이 오셨을 것이라 생각됩니다.
즉 음수값을 표현할 필요가 없을때 사용하면 더 많은 양수 데이터 값을 표현할수있습니다.
MySQL에서는 음수 값이 필요없는 데이터는 주로 Auto Increment를 사용한 id 값을 예시로 볼 수 있겠네요. 🙂