MySQL에서 테이블의 기본 키 확인하기
MySQL에서 특정 테이블의 기본 키(Primary Key)를 확인하고 싶다면 SHOW INDEX 명령어를 활용하면 됩니다. 이 명령어는 테이블에 설정된 인덱스 정보를 출력해 주며, 여기에 WHERE 절을 추가해 Key_name이 'PRIMARY'인 행만 필터링하면 기본 키 정보만 깔끔하게 추출할 수 있습니다.
기본 문법은 다음과 같습니다.
SHOW INDEX FROM 데이터베이스명.테이블명 WHERE Key_name = 'PRIMARY';복합 기본 키 예제
실습을 위해 두 개의 컬럼으로 구성된 복합 기본 키를 가진 테이블을 만들어 보겠습니다. 여기서는 'Id'와 'RollNum' 두 컬럼을 기본 키로 지정합니다.
mysql> CREATE TABLE TwoOrMorePrimary
-> (
-> Id int,
-> Name varchar(200),
-> RollNum int,
-> PRIMARY KEY(Id, RollNum)
-> );
Query OK, 0 rows affected (0.85 sec)테이블 생성이 완료되면 앞서 소개한 문법을 그대로 적용해 기본 키를 조회할 수 있습니다.
mysql> SHOW INDEX FROM business.TwoOrMorePrimary
-> WHERE Key_name = 'PRIMARY';실행 결과는 다음과 같습니다.
+------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| twoormoreprimary | 0 | PRIMARY | 1 | Id | A | 0 | NULL | NULL | | BTREE | | | YES | NULL |
| twoormoreprimary | 0 | PRIMARY | 2 | RollNum | A | 0 | NULL | NULL | | BTREE | | | YES | NULL |
+------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
2 rows in set (0.12 sec)
결과 해석
출력 결과를 살펴보면 Seq_in_index 값이 1인 'Id'와 2인 'RollNum'이 모두 Key_name이 'PRIMARY'로 표시되어 있습니다. 이는 두 컬럼이 하나의 복합 기본 키로 묶여 있다는 의미이며, Seq_in_index는 해당 컬럼이 기본 키 내에서 차지하는 순서를 나타냅니다.
또한 Non_unique 값이 0이라는 것은 중복 값을 허용하지 않는 고유 인덱스, 즉 기본 키라는 뜻입니다. 인덱스 유형도 일반적으로 사용되는 BTREE로 설정되어 있는 것을 확인할 수 있습니다.
참고: 다른 확인 방법
MySQL 8.0 이상에서는 SHOW COLUMNS FROM 테이블명 WHERE Key = 'PRI' 쿼리를 사용해 더 간결하게 기본 키 컬럼만 확인할 수도 있습니다. 상황에 맞는 방법을 선택해 사용하시면 됩니다.