MySQL) AUTO_INCREMENT
본문 바로가기
Data Base/SQL

MySQL) AUTO_INCREMENT

by 조훈이 2022. 1. 4.

 AUTO_INCREMENT 

자동으로 증가하는 COLUMN


  설명 

CREATE TABLE auto_test(
      num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
      name VARCHAR(10)
);

  num COLUMN 은 AUTO_INCREMENT로 선언이 되었다. AUTO_INCREMENT COLUMN 은 꼭 UNIQUE 조건을 가지고 있어야 한다. 그리고 이 TABLE에 data를 집어넣을 때 이 num COLUMN 에는 값을 넣을 필요가 없다. 자동으로 값이 입력되기 때문이다. 따라서, num COLUMN 에는 NULL 값을 입력해도 된다. 이 TABLE에 3개의 data를 입력 해 보았다.

 

INSERT INTO auto_test VALUES
(NULL, 'A'),
(NULL, 'B'),
(NULL, 'C');

  위와 같이 data를 입력 해 보았다.

'A', 'B', 'C' 입력 후

  그 결과 위와 같이 num 값은 INSERT된 순서대로 1부터 시작하여 2, 3 번호가 정해진 것을 볼 수 있다. 그렇다면 만약 num 값으로 3을 가지는 C를 삭제한 후 새로운 data를 삽입하면 어떻게 될까?

DELETE FROM auto_test WHERE name = 'C';
INSERT INTO auto_test VALUES (NULL, 'D');

  위와 같은 작업을 통해 'C' name을 가지는 data를 삭제한 뒤 새로운 data를 삽입 해 보았다. 결과는 아래와 같다.

'C' 삭제 뒤 'D' 입력 후

  그 결과 'D' name 을 가지는 data 의 num 값은 4가 들어간 것을 알 수 있다. 즉, data를 삭제하여도 AUTO_INCREMENT 는 하던대로 계속 하게 된다.

 

  AUTO_INCREMENT를 시작하는 번호와 증가값 또한 변경할 수 있다.

# AUTO_INCREMENT 의 입력값 변경
ALTER TABLE auto_test AUTO_INCREMENT = 27;

# 증가값 변경
SET @@auto_increment_increment = 2;

  저렇게 수행을 한 후에로 입력되는 data들의 num값은 27부터 2의 증가값을 가지고 입력이 된다. @@auto_increment_increment 는 서버 변수이며, 이 값을 변경함으로써 증가값을 변경할 수 있다.

 

INSERT INTO auto_test (name) VALUES
('E'), ('F'), ('G');

  시작하는 번호와 증가값을 변경한 뒤 위와 같은 data들을 추가로 삽입 해 보았다. 결과는 아래와 같다.

시작 번호, 증가값 변경 후

 

  name 이 'E', 'F', 'G' 인 data 들은 27부터 2의 증가값을 가지고 num 값이 증가하는 것을 확인할 수 있다.

728x90

댓글