본문 바로가기
Programming/SQL

[MySQL] Signed, Unsigned 비교 및 차이

by 코딩하는 금융인 2022. 12. 12.

안녕하세요.

오늘은 MySQL에서 데이터 타입 속성 Signed과 Unsigned에 대해서 비교해보고 차이를 알아보겠습니다.

 

 MySQL Signed vs Unsigned

▣ Integer(정수) 타입 Signed & Unsigned

- MySQL은 SQL의 표준 정수 타입인 INTEGER(INT)와 SMALLINT 그리고 표준 정수 타입의 범위를 더 확장한 TINYINT, MEDIUMINT, BIGINT까지 제공하고 있음.

- 각 정수 타입에 따라 요구되는 저장 공간과 표현할 수 있는 최댓값과 최솟값까지 달라짐.

- 정수 타입은 음수까지 표현이 가능한 Signed 타입과 양수만을 표현할 수 있는 Unsigned 타입으로 구분됨.

 

: MySQL 정수 타입별 표

타입 저장공간 Signed Unsigned
TINYINT 1바이트 -128 ~ 127 0 ~ 255
SMALLINT 2바이트 -32,768 ~ 32,767 0 ~ 65,535
MEDIUMINT 3바이트 -8,388,608 ~ 8,388,607 0 ~ 16,777,215
INT 4바이트 -2,147,483,648 ~ 2,147,483,647 0 ~ 4,294,967,295
BIGINT 8바이트 -9,223,372,036,854,775,808 
~ 9,223,372,036,854,775,807
0 ~ 18,446,744,073,709,551,615

 

- 즉, Signed와 Unsigned의 차이는 음수를 표현하느냐 하지 않느냐에 있고 정수 타입의 컬럼을 생성할 때 범위를 다르게 줄 때 사용함.

- 기본적으로 INT(n) 데이터 타입을 생성할 때 Default로 Signed가 설정되어 있음.

- 양수만을 사용할 때 Unsigned를 넣어주고 주로 자동증가 설정인 Not Null Auto_Increment*와 함께 사용함.

* 자동증가 설정에 대해 과거 포스팅한 글이 있으니 참고하시기를 바랍니다.

 

: 사용 예시

--사용 예시
CREATE TABLE 'Example' (
              'id' INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
              ...
              ...
    )

 

Reference
반응형

'Programming > SQL' 카테고리의 다른 글

[MySQL] AS ALIAS 연산자  (2) 2022.12.19
[MySQL] JSON 데이터 다루기  (1) 2022.12.14
[SQL] LAG & LEAD (그룹 내 행 순서)  (0) 2022.12.12
[MySQL] 시간 및 날짜 계산하기  (2) 2022.12.11
[MySQL] 월 말일/첫일 구하기  (2) 2022.12.10

댓글