MySQL에서 일부 열 이름을 제외하고 조회하기
MySQL에서 테이블의 전체 열 목록 중 특정 열만 제외한 나머지 열 이름을 확인하고 싶다면 NOT IN 연산자를 활용하면 됩니다. 이 방법은 information_schema 데이터베이스의 COLUMNS 테이블을 조회하는 방식으로 구현합니다.
1. 예제 테이블 생성
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable780 (
CustomerId int,
CustomerName varchar(100),
CustomerAge int,
CustomerCountryName varchar(100),
isMarried tinyint(1)
);
Query OK, 0 rows affected (0.47 sec)
위 테이블은 총 5개의 열(CustomerId, CustomerName, CustomerAge, CustomerCountryName, isMarried)로 구성되어 있습니다.
2. NOT IN으로 특정 열 제외하기
이제 information_schema.COLUMNS를 조회하되, NOT IN 조건을 사용해 CustomerId와 CustomerCountryName 두 열을 제외해 보겠습니다.
mysql> select group_concat(column_name) from `information_schema`.`COLUMNS` m
where
table_schema = 'web' and
table_name = 'DemoTable780' and
column_name not in ('CustomerId','CustomerCountryName')
group by table_schema,table_name;
쿼리 설명
- table_schema = 'web': 데이터베이스(스키마) 이름을 지정합니다. 실제 환경에 맞게 변경하세요.
- table_name = 'DemoTable780': 열 정보를 조회할 대상 테이블을 지정합니다.
- column_name not in (...): 결과에서 제외할 열 이름을 나열합니다.
- group_concat(column_name): 남은 열 이름들을 쉼표로 구분된 하나의 문자열로 묶어 출력합니다.
실행 결과
위 쿼리를 실행하면 다음과 같이 제외된 열을 뺀 나머지 열 이름만 출력됩니다.
+------------------------------------+
| group_concat(column_name) |
+------------------------------------+
| CustomerName,CustomerAge,isMarried |
+------------------------------------+
1 row in set (0.01 sec)
결과를 보면 CustomerId와 CustomerCountryName이 제외되고, CustomerName, CustomerAge, isMarried 세 개의 열 이름만 반환된 것을 확인할 수 있습니다.
정리
이처럼 information_schema.COLUMNS 테이블과 NOT IN 연산자를 조합하면, 원하는 열만 손쉽게 제외한 채 테이블의 열 목록을 조회할 수 있습니다. 열이 매우 많은 테이블에서 SELECT 문 작성 시 유용하게 활용할 수 있는 팁입니다.