MySQL에서 AUTO_INCREMENT로 설정된 컬럼의 최댓값, 즉 가장 마지막에 생성된 자동 증분 값을 확인해야 하는 경우가 자주 있습니다. 이 글에서는 예제 테이블을 만들고, 가장 높은 자동 증분 값을 조회하는 방법을 단계별로 살펴보겠습니다.
1. AUTO_INCREMENT 테이블 생성하기
먼저 UserId 컬럼을 AUTO_INCREMENT 기본 키로 설정한 테이블을 생성합니다.
mysql> create table DemoTable
(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName varchar(20)
);
Query OK, 0 rows affected (0.56 sec)2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable(UserName) values('John');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(UserName) values('Larry');
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable(UserName) values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(UserName) values('Bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(UserName) values('Carol');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(UserName) values('David');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(UserName) values('Robert');
Query OK, 1 row affected (0.20 sec)3. 전체 데이터 확인하기
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | | 2 | Larry | | 3 | Chris | | 4 | Bob | | 5 | Carol | | 6 | David | | 7 | Robert | +--------+----------+ 7 rows in set (0.00 sec)
4. 가장 높은 자동 증분 값 조회하기
UserId 컬럼을 내림차순(DESC)으로 정렬한 뒤 첫 번째 행만 가져오면, 가장 큰 자동 증분 값을 가진 레코드를 확인할 수 있습니다.
mysql> select *from DemoTable order by UserId desc limit 0,1;
실행 결과, 가장 높은 자동 증분 값이 포함된 행이 출력됩니다.
+--------+----------+ | UserId | UserName | +--------+----------+ | 7 | Robert | +--------+----------+ 1 row in set (0.00 sec)
참고: MAX() 함수로 더 간단하게 조회하기
레코드 전체가 아닌 최댓값 자체만 필요하다면 MAX() 함수를 사용하는 것이 더 효율적입니다.
mysql> select max(UserId) from DemoTable;
참고: LAST_INSERT_ID() 함수
현재 세션에서 마지막으로 삽입된 AUTO_INCREMENT 값을 바로 확인하고 싶다면 LAST_INSERT_ID() 함수를 활용할 수 있습니다. 다만 이 함수는 세션 단위로 동작하므로, 다른 클라이언트의 삽입 결과에는 영향을 받지 않는다는 점을 기억하세요.