INFORMATION_SCHEMA.TABLES를 활용한 최근 생성 테이블 조회
MySQL에서 가장 마지막에 생성된 테이블의 이름을 확인하려면 INFORMATION_SCHEMA.TABLES 개념을 활용하면 됩니다. 이 스키마는 데이터베이스 내 모든 테이블의 메타데이터(테이블 이름, 생성 시간 등)를 저장하고 있어, 생성 시간 기준으로 정렬하여 최신 테이블을 손쉽게 찾을 수 있습니다.
먼저 예제를 위해 테이블을 하나 생성해 보겠습니다. 이 테이블이 곧 가장 최근에 생성된 테이블이 됩니다.
mysql> create table DemoTable1323
-> (
-> FirstName varchar(10)
-> );
Query OK, 0 rows affected (0.43 sec)
테이블에 데이터 삽입하기
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable1323 values('Chris');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1323 values('David');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1323 values('Bob');
Query OK, 1 row affected (0.11 sec)SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable1323;
실행 결과는 다음과 같습니다.
+-----------+
| FirstName |
+-----------+
| Chris |
| David |
| Bob |
+-----------+
3 rows in set (0.00 sec)
마지막으로 생성된 테이블 이름을 가져오는 쿼리
가장 최근에 생성된 테이블 이름을 조회하는 쿼리는 다음과 같습니다. 핵심은 information_schema.tables에서 특정 데이터베이스(table_schema)를 조건으로 지정한 뒤, create_time을 기준으로 내림차순 정렬하고 LIMIT 1로 상위 한 건만 가져오는 것입니다.
mysql> select table_name,create_time AS `Time` from information_schema.tables where table_schema = 'web' order by create_time desc limit 1;
실행 결과는 다음과 같습니다.
+---------------+---------------------+
| TABLE_NAME | Time |
+---------------+---------------------+
| demotable1323 | 2019-09-18 22:03:24 |
+---------------+---------------------+
1 row in set (0.02 sec)
쿼리 구성 요소 설명
- table_name: 테이블의 이름을 반환합니다.
- create_time AS `Time`: 테이블 생성 시간을 별칭 'Time'으로 표시합니다.
- where table_schema = 'web': 조회 대상을 'web' 데이터베이스로 한정합니다. 실제 환경에서는 자신의 데이터베이스 이름으로 변경해야 합니다.
- order by create_time desc: 생성 시간을 내림차순 정렬하여 가장 최근 테이블이 맨 위에 오도록 합니다.
- limit 1: 결과 중 첫 번째 행, 즉 가장 최근에 생성된 테이블 하나만 반환합니다.
이처럼 INFORMATION_SCHEMA.TABLES와 ORDER BY, LIMIT 절을 조합하면 MySQL에서 가장 최근에 생성된 테이블을 간단하게 확인할 수 있습니다. 참고로 MySQL 5.7 이상 버전에서는 InnoDB 테이블의 create_time이 정확히 기록되므로 이 방법을 안정적으로 사용할 수 있습니다.