MySQL에서 DESCRIBE 문은 테이블의 구조와 컬럼 정보를 손쉽게 확인할 수 있는 유용한 명령어입니다. 흥미로운 점은 DESCRIBE와 동일한 결과를 얻을 수 있는 동의어(synonym) 구문이 존재한다는 것입니다. 이번 글에서는 DESCRIBE 대신 사용할 수 있는 두 가지 구문을 살펴보겠습니다.
EXPLAIN 문
EXPLAIN은 DESCRIBE 문의 공식적인 동의어로, 문법 또한 거의 동일합니다. 즉, DESCRIBE가 사용되는 자리에 그대로 EXPLAIN을 넣어도 같은 결과를 얻을 수 있습니다.
다음 예시를 통해 실제 동작을 확인해 보겠습니다.
mysql> Explain Employee; +-------+-------------+------+-----+---------+------------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+------------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+------------------+ 2 rows in set (0.11 sec)
실행 결과를 보면 EXPLAIN 문이 DESCRIBE 문과 완전히 동일한 출력을 제공하는 것을 확인할 수 있습니다. 컬럼 이름(Field), 데이터 타입(Type), NULL 허용 여부(Null), 키 정보(Key), 기본값(Default), 추가 속성(Extra)까지 모두 같게 표시됩니다.
SHOW COLUMNS 문
SHOW COLUMNS 역시 DESCRIBE의 동의어이며, 따라서 EXPLAIN의 동의어이기도 합니다. 다만 이 구문은 DESCRIBE나 EXPLAIN과 문법이 약간 다른데, 테이블 이름 앞에 FROM 키워드를 반드시 붙여야 한다는 점이 특징입니다.
문법
SHOW COLUMNS FROM table_name;
예제
아래 예제에서 보듯이, SHOW COLUMNS 문의 출력 결과는 앞서 살펴본 DESCRIBE 및 EXPLAIN 문의 결과와 정확히 동일합니다.
mysql> Show columns from employee; +-------+-------------+------+-----+---------+------------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+------------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+------------------+ 2 rows in set (0.11 sec)
정리
세 가지 구문 모두 테이블의 컬럼 구조를 확인하는 동일한 기능을 수행하므로, 상황과 취향에 따라 편한 것을 선택하여 사용하면 됩니다. 일반적으로 쿼리 실행 계획을 분석할 때는 EXPLAIN이, 단순히 테이블 구조를 조회할 때는 DESCRIBE나 SHOW COLUMNS가 널리 사용됩니다.