MySQL 예제가 포함된 AUTO_INCREMENT
자동 증가란 무엇입니까?
자동 증가는 숫자 데이터 유형에서 작동하는 기능입니다. 자동 증가로 정의된 필드에 대한 레코드가 테이블에 삽입될 때마다 연속적인 숫자 값을 자동으로 생성합니다.
자동 증가는 언제 사용하나요?
데이터베이스 정규화 강의에서는 기본 키와 외래 키를 사용하여 서로 관련된 여러 개의 작은 테이블에 데이터를 저장함으로써 중복을 최소화하면서 데이터를 저장할 수 있는 방법을 살펴보았습니다.
기본 키는 데이터베이스의 행을 고유하게 식별하므로 고유해야 합니다. 하지만 기본 키가 항상 고유하도록 하려면 어떻게 해야 할까요? 가능한 해결책 중 하나는 데이터를 추가하기 전에 테이블에 키가 있는지 확인하는 공식을 사용하여 기본 키를 생성하는 것입니다. 이 방법은 잘 작동할 수 있지만 보시다시피 이 접근 방식은 복잡하고 완벽하지 않습니다. 이러한 복잡성을 피하고 기본 키가 항상 고유하도록 하려면 다음을 사용할 수 있습니다. MySQL'의 자동 증가 기능을 사용하여 기본 키를 생성합니다. 자동 증가는 INT 데이터 유형과 함께 사용됩니다. INT 데이터 유형은 부호 있는 값과 부호 없는 값을 모두 지원합니다. 부호 없는 데이터 유형은 양수만 포함할 수 있습니다. 모범 사례로서 자동 증가 기본 키에 부호 없는 제약 조건을 정의하는 것이 좋습니다.
자동 증가 구문
이제 영화 카테고리 테이블을 생성하는 데 사용된 스크립트를 살펴보겠습니다.
CREATE TABLE `categories` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) );
Category_id 필드의 "AUTO_INCREMENT"를 확인하세요. 이렇게 하면 새 행이 테이블에 삽입될 때마다 카테고리 ID가 자동으로 생성됩니다. 테이블에 데이터를 삽입할 때 제공되지 않습니다. MySQL 그것을 생성합니다.
기본적으로 AUTO_INCREMENT의 시작 값은 1이며 새 레코드마다 1씩 증가합니다.
카테고리 테이블의 현재 내용을 살펴보겠습니다.
SELECT * FROM `categories`;
위 스크립트를 실행하면 MySQL myflixdb에 대한 워크벤치의 결과는 다음과 같습니다.
category_id | category_name | remarks |
---|---|---|
1 | Comedy | Movies with humour |
2 | Romantic | Love stories |
3 | Epic | Story acient movies |
4 | Horror | NULL |
5 | Science Fiction | NULL |
6 | Thriller | NULL |
7 | Action | NULL |
8 | Romantic Comedy | NULL |
이제 카테고리 테이블에 새 카테고리를 삽입해 보겠습니다.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
myflixdb에 대해 위 스크립트를 실행합니다. MySQL 워크 벤치 그러면 아래에 보이는 결과가 나옵니다.
category_id | category_name | remarks |
---|---|---|
1 | Comedy | Movies with humour |
2 | Romantic | Love stories |
3 | Epic | Story acient movies |
4 | Horror | NULL |
5 | Science Fiction | NULL |
6 | Thriller | NULL |
7 | Action | NULL |
8 | Romantic Comedy | NULL |
9 | Cartoons | NULL |
카테고리 ID를 제공하지 않았습니다. MySQL 카테고리 ID가 자동 증가로 정의되어 있기 때문에 자동으로 생성되었습니다.
다음에 의해 생성된 마지막 삽입 ID를 얻으려는 경우 MySQL, LAST_INSERT_ID 함수를 사용하여 이를 수행할 수 있습니다. 아래 표시된 스크립트는 생성된 마지막 ID를 가져옵니다.
SELECT LAST_INSERT_ID();
위 스크립트를 실행하면 INSERT 쿼리에 의해 생성된 마지막 자동 증분 번호가 제공됩니다. 결과는 아래와 같습니다.
요약
- 숫자 데이터 유형이 있는 열에 자동 증가 속성을 지정하면 데이터베이스에 새 행이 추가될 때마다 순차적으로 숫자가 생성됩니다.
- 자동 증분은 기본 키를 생성하는 데 일반적으로 사용됩니다.
- 자동 증분에 정의된 데이터 유형은 많은 레코드를 수용할 수 있을 만큼 커야 합니다. TINYINT를 자동 증분 필드의 데이터 유형으로 정의하면 테이블에 추가할 수 있는 레코드 수가 255개로 제한됩니다. 그 이상의 값은 TINYINT 데이터 유형에서 허용되지 않기 때문입니다.
- 음수가 발생하는 것을 방지하기 위해 자동 증가 기본 키에 부호 없는 제약 조건을 지정하는 것이 좋은 방법으로 간주됩니다.
- 테이블에서 행이 삭제되면 해당 자동 증가 ID는 재사용되지 않습니다. MySQL 계속해서 새로운 숫자를 순차적으로 생성합니다.
- 기본적으로 AUTO_INCREMENT의 시작 값은 1이며 새 레코드마다 1씩 증가합니다.
- AUTO_INCREMENT 시퀀스가 다른 값으로 시작되게 하려면 AUTO_INCREMENT = 10을 사용하세요.