안녕하세요.
오늘은 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 |
댓글