Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 특정 열을 제외한 나머지 열 이름만 조회하는 방법

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 조건을 사용해 CustomerIdCustomerCountryName 두 열을 제외해 보겠습니다.

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)

결과를 보면 CustomerIdCustomerCountryName이 제외되고, CustomerName, CustomerAge, isMarried 세 개의 열 이름만 반환된 것을 확인할 수 있습니다.

정리

이처럼 information_schema.COLUMNS 테이블과 NOT IN 연산자를 조합하면, 원하는 열만 손쉽게 제외한 채 테이블의 열 목록을 조회할 수 있습니다. 열이 매우 많은 테이블에서 SELECT 문 작성 시 유용하게 활용할 수 있는 팁입니다.