MySQL에서 음수 저장하기: TINYINT 데이터 타입
MySQL에서 음수를 저장하려면 TINYINT 데이터 타입을 사용할 수 있습니다. TINYINT는 부호 있는(signed) 정수를 저장할 수 있으며, 저장 가능한 범위는 -128부터 127까지입니다.
TINYINT 컬럼 생성 문법
다음은 TINYINT 타입의 컬럼을 포함한 테이블을 생성하는 기본 문법입니다.
CREATE TABLE yourTableName ( yourColumnName TINYINT ... );
실습 예제: TINYINT 테이블 만들기
먼저 TINYINT 타입으로 설정된 컬럼을 가진 테이블을 생성해 보겠습니다.
mysql> create table DemoTable ( Number tinyint ); Query OK, 0 rows affected (0.69 sec)
이제 insert 명령어를 사용하여 테이블에 여러 레코드를 삽입해 보겠습니다.
mysql> insert into DemoTable values(-10); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(-128); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(128); ERROR 1264 (22003): Out of range value for column 'Number' at row 1 mysql> insert into DemoTable values(127); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable values(-1); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(14); Query OK, 1 row affected (0.19 sec)
위 실행 결과를 보면 주목할 점이 있습니다. 값 128을 삽입하려고 했을 때 ERROR 1264 (22003): Out of range value 오류가 발생했습니다. 이는 TINYINT의 최대 저장 범위가 127이기 때문입니다. 반면 -128과 같은 최소값은 정상적으로 저장됩니다.
저장된 데이터 확인하기
select 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+--------+ | Number | +--------+ | -10 | | -128 | | 127 | | -1 | | 14 | +--------+ 5 rows in set (0.00 sec)
정리 및 추가 팁
TINYINT는 1바이트만 사용하므로 저장 공간을 절약할 수 있으며, 작은 범위의 정수 값을 다룰 때 매우 유용합니다. 참고로 MySQL의 정수 계열 데이터 타입은 모두 기본적으로 부호 있는(signed) 상태이므로 음수 저장이 가능합니다.
- TINYINT: -128 ~ 127 (1바이트)
- SMALLINT: -32,768 ~ 32,767 (2바이트)
- MEDIUMINT: -8,388,608 ~ 8,388,607 (3바이트)
- INT: 약 -21억 ~ 21억 (4바이트)
- BIGINT: 매우 큰 범위의 정수 (8바이트)
만약 더 넓은 범위의 음수를 저장해야 한다면 SMALLINT, INT 등 더 큰 정수 타입을 선택하면 됩니다. 반대로 UNSIGNED 옵션을 지정하면 음수는 저장할 수 없고 양수 범위만 두 배로 확장됩니다.