Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL AUTO_INCREMENT는 기본적으로 부호 있는(signed) 컬럼일까?

네, MySQL에서 AUTO_INCREMENT로 설정된 컬럼은 기본적으로 부호 있는(signed) 타입입니다. 즉, 양수와 음수를 모두 저장할 수 있습니다.

테이블 생성하기

먼저 AUTO_INCREMENT 컬럼을 가진 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
-> (
-> MyNumber int AUTO_INCREMENT PRIMARY KEY
-> );
Query OK, 0 rows affected (0.45 sec)

레코드 삽입하기

INSERT 명령으로 레코드를 추가합니다. 이때 AUTO_INCREMENT 컬럼에 음수 값도 함께 넣어 보겠습니다.

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values(-100);
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable values(-300);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(0);
Query OK, 1 row affected (0.18 sec)

결과 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 봅니다.

mysql> select *from DemoTable;

출력 결과

+----------+
| MyNumber |
+----------+
| -300 |
| -100 |
| 1 |
| 2 |
+----------+
4 rows in set (0.00 sec)

실행 결과를 보면 자동 증가 값(1, 2)과 함께 직접 입력한 음수 값(-100, -300)도 아무런 제약 없이 그대로 저장된 것을 확인할 수 있습니다. 이것이 바로 AUTO_INCREMENT 컬럼이 기본적으로 signed 타입이라는 것을 보여주는 예시입니다.

참고: UNSIGNED 옵션으로 양수만 허용하기

AUTO_INCREMENT 컬럼에 양수만 저장되도록 제한하고 싶다면, 컬럼을 정의할 때 UNSIGNED 옵션을 추가하면 됩니다.

MyNumber INT UNSIGNED AUTO_INCREMENT PRIMARY KEY

이렇게 설정하면 음수 값을 입력하려는 시도에서 오류가 발생하므로, 잘못된 데이터가 들어오는 것을 사전에 방지하고 데이터 무결성을 지킬 수 있습니다.