• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 1. 서버에 연결 그리고 서버와 연결 끊기
    2. 쿼리 입력
    3. 데이터베이스 생성 및 사용
    4. 데이터베이스 및 테이블 정보 가져 오기
    5. 배치 모드에서의 MySQL의 사용
    6. 일반적인 쿼리의 예제
    1. 컬럼의 최대 값
    2. 특정 컬럼의 최대 값이 저장되는 행
    3. 그룹별 컬럼의 최대 값
    4. 특정 컬럼 그룹별 최대 값이 저장되는 행
    5. 사용자 정의 변수 사용
    6. 외부 키의 사용
    7. 두 개의 키를 사용하여 검색
    8. 일일 방​​문자수 계산
    9. AUTO_INCREMENT 사용
    7. Apache와 MySQL 사용
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

3.6.9 AUTO_INCREMENT 사용

AUTO_INCREMENT 속성을 사용하면 새로운 행에 고유 식별자를 생성 할 수 있습니다.

 CREATE TABLE animals (
      id MEDIUMINT NOT NULL AUTO_INCREMENT,
      name CHAR (30) NOT NULL,
      PRIMARY KEY (id)
 );

 INSERT INTO animals (name) VALUES
     ( 'dog') ( 'cat') ( 'penguin')
     ( 'lax') ( 'whale') ( 'ostrich');

 SELECT * FROM animals;

다음의 결과가 표시됩니다.

+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+

AUTO_INCREMENT 컬럼에 값이 지정되지 않았기 때문에 MySQL이 자동으로 시퀀스 번호를 할당했습니다. 컬럼에 명시 적으로 0을 할당 시퀀스 번호를 생성 할 수 있습니다. 컬럼이 NOT NULL 로 선언 된 경우 NULL 할당 시퀀스 번호를 생성 할 수 있습니다.

SQL 함수 LAST_INSERT_ID() 또는 C API 함수 mysql_insert_id() 를 사용하면 마지막에 생성 된 AUTO_INCREMENT 값을 얻을 수 있습니다. 이 함수는 연결에 고유의 함수이기 때문에 다른 연결뿐만 아니라 삽입을 실행하고 있어도, 반환 값은 영향을받지 않습니다.

AUTO_INCREMENT 컬럼에 필요한 최대 시퀀스 값을 보관 유지하는데 충분한 크기를 가지는 최소의 정수 데이터 형식을 사용합니다. 컬럼 데이터 형의 상한 값에 도달하면 다음 시퀀스 번호를 생성하려고 할 때 실패합니다. 가능하면 넓은 범위를 가능하게하기 위해 UNSIGNED 속성을 사용합니다. 예를 들어, TINYINT 를 사용하는 경우 허용되는 최대 시퀀스 번호는 127입니다. TINYINT UNSIGNED 의 경우 최대 값은 255입니다. 모든 정수형의 범위는 섹션 11.2.1 "정수형 (정확한 숫자) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT" 를 참조하십시오.

참고

여러 줄을 동시에 삽입하는 경우, LAST_INSERT_ID() 와 mysql_insert_id() 는 실제로 처음에 삽입 된 행의 AUTO_INCREMENT 키를 돌려줍니다. 그러면 복제 설정에 여러 줄의 삽입을 다른 서버에서 제대로 재현 할 수 있습니다.

1 이외의 AUTO_INCREMENT 값으로 시작하려면 다음과 같이 그 값을 CREATE TABLE 또는 ALTER TABLE 로 설정합니다.

 mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

InnoDB의주의

InnoDB 테이블에서는 일련의 INSERT 문 도중에 자동 증가 값을 포함한 컬럼을 수정하는 경우는주의가 필요합니다. 예를 들어, UPDATE 문을 사용하여 자동 증가 컬럼에 새로운 더 큰 값을 넣으면 후속 INSERT 는 "중복"오류가 발생할 수 있습니다. DELETE 를 실행 한 후에 더 INSERT 문이 계속되는 경우, 또는 트랜잭션을 COMMIT 했지만 UPDATE 문 뒤에가 아닌 경우에 자동 증가 값이 이미 존재 여부 테스트가 이루어집니다.

MyISAM주의

  • MyISAM 테이블에는 멀티 컬럼 인덱스의 보조 컬럼에 AUTO_INCREMENT 를 지정할 수 있습니다. 이 경우 AUTO_INCREMENT 컬럼에 생성 된 값은 MAX( auto_increment_column ) + 1 WHERE prefix= given-prefix 로 계산됩니다. 이는 데이터를 정렬 된 그룹으로 분할하는 경우에 유용합니다.

     CREATE TABLE animals (
         grp ENUM ( 'fish', 'mammal', 'bird') NOT NULL,
         id MEDIUMINT NOT NULL AUTO_INCREMENT,
         name CHAR (30) NOT NULL,
         PRIMARY KEY (grp, id)
     ) ENGINE = MyISAM;
    
     INSERT INTO animals (grp, name) VALUES
         ( 'mammal', 'dog') ( 'mammal', 'cat')
         ( 'bird', 'penguin') ( 'fish', 'lax') ( 'mammal', 'whale')
         ( 'bird', 'ostrich');
    
     SELECT * FROM animals ORDER BY grp, id;
    

    다음의 결과가 표시됩니다.

    +--------+----+---------+
    | grp    | id | name    |
    +--------+----+---------+
    | fish   |  1 | lax     |
    | mammal |  1 | dog     |
    | mammal |  2 | cat     |
    | mammal |  3 | whale   |
    | bird   |  1 | penguin |
    | bird   |  2 | ostrich |
    +--------+----+---------+
    

    이 경우 ( AUTO_INCREMENT 컬럼이 다중 컬럼 인덱스의 일부로 사용되는 경우) 그룹 내에서 최대의 AUTO_INCREMENT 값이있는 행을 삭제하면 그 그룹에서 같은 AUTO_INCREMENT 값이 다시 사용되게됩니다. 이것은 일반적으로 AUTO_INCREMENT 값이 재사용 될 수없는 MyISAM 테이블의 경우에도 발생합니다.

  • AUTO_INCREMENT 컬럼이 복합 인덱스의 일부인 경우, MySQL은 AUTO_INCREMENT 컬럼으로 시작하는 인덱스를 사용하여 시퀀스 값을 생성합니다 (있는 경우). 예를 들어, animals 테이블에 인덱스 PRIMARY KEY (grp, id) 및 INDEX (id) 이 포함되어있는 경우, MySQL은 시퀀스 값의 생성에서 PRIMARY KEY 를 무시합니다. 그 결과 테이블에는 grp 값마다 하나의 시퀀스가 아니라 하나의 시퀀스를 포함 할 수 있습니다.

참조

AUTO_INCREMENT 에 관한 세부 사항 참조를 보여줍니다.

  • 컬럼에 AUTO_INCREMENT 속성을 할당하는 방법 : 섹션 13.1.17 "CREATE TABLE 구문」 및 섹션 13.1.7 "ALTER TABLE 구문」 .

  • AUTO_INCREMENT 의 NO_AUTO_VALUE_ON_ZERO SQL 모드에 의한 동작의 차이 : 섹션 5.1.7 "서버 SQL 모드" .

  • LAST_INSERT_ID() 함수를 사용하여 최신의 AUTO_INCREMENT 값을 찾는 방법 : 섹션 12.14 "정보 함수" .

  • 사용하는 AUTO_INCREMENT 값 설정 : 섹션 5.1.4 "서버 시스템 변수" .

  • AUTO_INCREMENT 과 복제 : 섹션 17.4.1.1 "복제 및 AUTO_INCREMENT" .

  • 복제에 사용 가능 AUTO_INCREMENT 관련 서버 시스템 변수 ( auto_increment_increment 과 auto_increment_offset ) : 섹션 5.1.4 "서버 시스템 변수" .


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved