MySQL NOT LIKE 구문이란?
MySQL에서 특정 패턴을 포함하지 않는 데이터를 조회할 때는 NOT LIKE 연산자를 사용합니다. 특히 테이블 목록을 필터링할 때 유용하게 활용할 수 있습니다.
MySQL에서 NOT LIKE의 올바른 기본 구문은 다음과 같습니다:
SHOW TABLES WHERE `TABLES_IN_데이터베이스명` NOT LIKE '테이블명%';
NOT LIKE 구문 이해하기
위 구문을 실제로 이해하기 위해 여러 개의 테이블을 가진 SAMPLE 데이터베이스를 사용해 보겠습니다. 먼저 해당 데이터베이스의 전체 테이블 목록을 확인한 후, NOT LIKE 구문을 적용해 결과를 비교해 보겠습니다.
1단계: 데이터베이스 선택
먼저 USE 명령어를 사용해 작업 대상 데이터베이스를 SAMPLE로 변경합니다:
mysql> USE SAMPLE; Database changed
2단계: 전체 테이블 목록 조회
데이터베이스에 있는 모든 테이블을 조회하는 쿼리는 다음과 같습니다:
mysql> show tables;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다:
+--------------------------+ | Tables_in_sample | +--------------------------+ | blobsizedemo | | insert_prevent | | insertrecord_selecttable | | insertrecordprevent | | mytable | | newlinedemo | | notequaloperator | | sumofeverydistinct | | yourtable | +--------------------------+ 9 rows in set (0.00 sec)
현재 SAMPLE 데이터베이스에는 총 9개의 테이블이 존재하는 것을 확인할 수 있습니다.
3단계: NOT LIKE로 테이블 필터링
이제 앞서 소개한 NOT LIKE 구문을 활용하여, 테이블 이름에 "insert"라는 텍스트가 포함되지 않은 테이블만 조회해 보겠습니다. 쿼리는 다음과 같습니다:
mysql> show tables where `TABLES_IN_sample` NOT LIKE 'insert%';
실행 결과는 다음과 같습니다:
+--------------------+ | Tables_in_sample | +--------------------+ | blobsizedemo | | mytable | | newlinedemo | | notequaloperator | | sumofeverydistinct | | yourtable | +--------------------+ 6 rows in set (0.00 sec)
결과 분석 및 핵심 정리
NOT LIKE 조건을 적용한 결과, 원래 9개였던 테이블 중 "insert"로 시작하는 3개의 테이블(insert_prevent, insertrecord_selecttable, insertrecordprevent)이 제외된 6개의 테이블만 출력된 것을 확인할 수 있습니다.
여기서 주목할 점은 백틱(`)으로 감싸인 TABLES_IN_sample 부분입니다. SHOW TABLES 명령 실행 시 생성되는 컬럼명은 데이터베이스 이름에 따라 달라지므로, 반드시 자신의 데이터베이스 이름에 맞게 컬럼명을 지정해야 한다는 점을 기억하세요. 또한 NOT LIKE 뒤에 오는 패턴 문자열은 작은따옴표(')로 감싸야 하며, %는 임의의 문자열을 의미하는 와일드카드입니다.