MySQL에서 테이블의 AUTO_INCREMENT 값을 확인하고 싶다면 크게 두 가지 방법을 사용할 수 있습니다. 하나는 SHOW TABLE STATUS 명령어를 이용하는 것이고, 다른 하나는 information_schema 데이터베이스를 조회하는 것입니다.
방법 1: SHOW TABLE STATUS 명령어 사용
테이블 상태 정보를 출력하는 SHOW TABLE STATUS 명령어를 사용하면 AUTO_INCREMENT 값을 포함한 다양한 테이블 정보를 한 번에 확인할 수 있습니다.
기본 문법은 다음과 같습니다.
SHOW TABLE STATUS LIKE 'yourTableName'\G
방법 2: information_schema 조회
MySQL의 메타데이터가 저장된 information_schema.TABLES 테이블을 직접 조회하여 원하는 값만 깔끔하게 가져올 수도 있습니다.
SELECT `AUTO_INCREMENT`
FROM `information_schema`.`TABLES`
WHERE `TABLE_SCHEMA` = 'yourDatabaseName'
AND `TABLE_NAME` = 'yourTableName';
실습 예제로 확인하기
위 두 가지 문법을 실제로 이해하기 위해 예제 테이블을 생성해 보겠습니다.
1. 테이블 생성
mysql> create table viewAutoIncrementDemo
-> (
-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName varchar(20)
-> );
Query OK, 0 rows affected (0.59 sec)
UserId 컬럼은 AUTO_INCREMENT 속성을 가진 기본 키로 설정되어, 레코드가 삽입될 때마다 자동으로 1씩 증가합니다.
2. 레코드 삽입
이제 INSERT 명령어로 몇 개의 레코드를 삽입해 보겠습니다.
mysql> insert into viewAutoIncrementDemo(UserName) values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Bob');
Query OK, 1 row affected (0.08 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Sam');
Query OK, 1 row affected (0.12 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Mike');
Query OK, 1 row affected (0.14 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('David');
Query OK, 1 row affected (0.16 sec)
mysql> insert into viewAutoIncrementDemo(UserName) values('Larry');
Query OK, 1 row affected (0.11 sec)
3. 전체 레코드 조회
SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from viewAutoIncrementDemo;
실행 결과는 다음과 같습니다.
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | | 2 | Carol | | 3 | Bob | | 4 | Sam | | 5 | Mike | | 6 | David | | 7 | Larry | +--------+----------+ 7 rows in set (0.00 sec)
7개의 레코드가 순서대로 삽입되었으며, UserId는 1부터 7까지 자동으로 증가한 것을 볼 수 있습니다.
AUTO_INCREMENT 값 확인 결과
SHOW TABLE STATUS 실행 결과
첫 번째 방법인 SHOW TABLE STATUS 명령어를 실행해 보겠습니다.
mysql> SHOW TABLE STATUS LIKE 'viewAutoIncrementDemo'\G
출력 결과는 다음과 같습니다.
*************************** 1. row ***************************
Name: viewautoincrementdemo
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 7
Avg_row_length: 2340
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 8
Create_time: 2019-03-02 04:05:20
Update_time: 2019-03-02 04:06:11
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.08 sec)
결과 중 Auto_increment: 8 항목을 주목하세요. 현재 마지막 레코드의 UserId가 7이므로, 다음에 삽입될 레코드에는 8이 할당된다는 의미입니다.
information_schema 조회 결과
두 번째 방법으로 information_schema를 조회해 보겠습니다. 여기서는 데이터베이스 이름이 'sample'이라고 가정합니다.
mysql> SELECT `AUTO_INCREMENT` -> FROM `information_schema`.`TABLES` -> WHERE `TABLE_SCHEMA` = 'sample' -> AND `TABLE_NAME` = 'viewAutoIncrementDemo';
출력 결과는 다음과 같습니다.
+----------------+ | AUTO_INCREMENT | +----------------+ | 8 | +----------------+ 1 row in set (0.00 sec)
두 방법 모두 동일하게 8이라는 값을 반환합니다. 테이블의 전체 상태 정보가 필요하다면 첫 번째 방법을, AUTO_INCREMENT 값만 간단히 확인하고 싶다면 두 번째 방법이 더 효율적입니다.