MySQL에서 SHOW COLUMNS 명령어는 테이블의 전체 컬럼 정보를 보여줍니다. 하지만 경우에 따라 특정 컬럼만 제외하고 나머지 컬럼 정보를 확인하고 싶을 수 있습니다. 이때 WHERE 절과 NOT IN 연산자를 함께 사용하면 원하지 않는 컬럼을 손쉽게 걸러낼 수 있습니다.
1. 데모 테이블 생성
먼저 실습에 사용할 데모 테이블을 생성해 보겠습니다.
mysql> create table excludeCertainColumnsDemo
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(100),
-> StudentAge int,
-> StudentMarks int,
-> StudentAddress varchar(200)
-> );
Query OK, 0 rows affected (0.50 sec)
2. 테이블 구조 확인
desc 명령어를 사용하면 테이블의 전체 구조를 확인할 수 있습니다.
mysql> desc excludeCertainColumnsDemo;
실행 결과는 다음과 같습니다.
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| StudentId | int(11) | NO | PRI | NULL | auto_increment |
| StudentName | varchar(100) | YES | | NULL | |
| StudentAge | int(11) | YES | | NULL | |
| StudentMarks | int(11) | YES | | NULL | |
| StudentAddress | varchar(200) | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
3. SHOW COLUMNS에서 특정 컬럼 제외하기
SHOW COLUMNS의 결과에는 Field, Type, Null, Key, Default, Extra라는 컬럼들이 포함되어 있습니다. 이 중 Field 컬럼은 각 필드의 이름을 담고 있으므로, 이 값을 기준으로 WHERE Field NOT IN (...) 조건을 적용하면 원하는 컬럼을 제외할 수 있습니다.
여기서는 'StudentAge'와 'StudentMarks' 두 컬럼을 제외해 보겠습니다. 쿼리는 다음과 같습니다.
mysql> SHOW COLUMNS FROM excludeCertainColumnsDemo WHERE Field NOT IN ('StudentAge', 'StudentMarks');실행 결과는 다음과 같습니다.
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| StudentId | int(11) | NO | PRI | NULL | auto_increment |
| StudentName | varchar(100) | YES | | NULL | |
| StudentAddress | varchar(200) | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
정리
위 결과를 보면 지정한 StudentAge와 StudentMarks 컬럼이 목록에서 빠지고 나머지 3개 컬럼만 출력된 것을 확인할 수 있습니다. 이처럼 SHOW COLUMNS ... WHERE Field NOT IN (...) 패턴을 활용하면 대형 테이블에서 필요한 컬럼 정보만 깔끔하게 조회할 수 있습니다. 반대로 특정 컬럼만 포함하고 싶다면 NOT IN 대신 IN 연산자를 사용하면 됩니다.