MySQL의 SHOW COLUMNS 명령어는 기본적으로 테이블에 컬럼이 정의된 순서대로 결과를 반환합니다. 만약 컬럼 이름을 알파벳순처럼 특정 순서로 정렬된 결과를 얻고 싶다면, SHOW COLUMNS 대신 INFORMATION_SCHEMA.COLUMNS 뷰를 조회하고 ORDER BY 절을 함께 사용해야 합니다.
기본 구문
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '테이블명' AND column_name LIKE '시작컬럼명%' ORDER BY column_name DESC;
주요 요소 살펴보기:
INFORMATION_SCHEMA.COLUMNS: 데이터베이스 내 모든 테이블의 컬럼 정보를 담고 있는 시스템 뷰입니다.WHERE table_name = '테이블명': 조회 대상 테이블을 지정합니다.LIKE '시작컬럼명%': 특정 문자열로 시작하는 컬럼만 필터링할 수 있습니다.ORDER BY column_name DESC / ASC: 내림차순 또는 오름차순으로 결과를 정렬합니다.
예제 테이블 생성하기
설명을 위해 먼저 TEST 데이터베이스에 테이블을 하나 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table OrderByColumnName -> ( -> StudentId int, -> StudentFirstName varchar(10), -> StudentLastName varchar(10), -> StudentAddress varchar(20), -> StudentAge int, -> StudentMarks int -> ); Query OK, 0 rows affected (1.81 sec)
Case 1: 내림차순(DESC)으로 정렬하기
컬럼 이름을 내림차순(Z→A)으로 정렬하여 반환하려면 ORDER BY 절에 DESC 키워드를 사용합니다.
mysql> SELECT COLUMN_NAME -> FROM INFORMATION_SCHEMA.COLUMNS -> WHERE table_name = 'OrderByColumnName' -> AND column_name LIKE 'student%' -> ORDER BY column_name DESC;
실행 결과는 다음과 같습니다.
+------------------+ | COLUMN_NAME | +------------------+ | StudentMarks | | StudentLastName | | StudentId | | StudentFirstName | | StudentAge | | StudentAddress | +------------------+ 6 rows in set (0.00 sec)
Case 2: 오름차순(ASC)으로 정렬하기
반대로 오름차순(A→Z)으로 정렬하고 싶다면 별도의 키워드를 붙일 필요가 없습니다. ORDER BY 절은 기본적으로 오름차순으로 동작하기 때문에, ASC 키워드를 생략해도 결과는 동일하게 정렬됩니다.
mysql> SELECT COLUMN_NAME -> FROM INFORMATION_SCHEMA.COLUMNS -> WHERE table_name = 'OrderByColumnName' -> AND column_name LIKE 'student%' -> ORDER BY column_name;
실행 결과는 다음과 같습니다.
+------------------+ | COLUMN_NAME | +------------------+ | StudentAddress | | StudentAge | | StudentFirstName | | StudentId | | StudentLastName | | StudentMarks | +------------------+ 6 rows in set (0.00 sec)
정리
MySQL에서 컬럼 목록을 특정 순서로 조회하려면 SHOW COLUMNS 대신 INFORMATION_SCHEMA.COLUMNS를 조회하는 것이 가장 확실한 방법입니다. 내림차순에는 DESC를 명시하고, 오름차순은 기본값이므로 생략할 수 있다는 점만 기억하면 됩니다.