MySQL의 LIKE 연산자는 패턴 일치(pattern matching)를 기반으로 데이터를 조회할 때 사용됩니다. 마찬가지로 뷰(View)를 생성할 때도 LIKE 연산자를 활용하면, 기본 테이블(base table)에서 특정 패턴에 해당하는 데이터만 선택하여 조회할 수 있습니다.
이 개념을 이해하기 위해 다음과 같은 데이터를 가진 기본 테이블 student_info를 사용해 보겠습니다.
mysql> Select * from Student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | | 132 | Shyam | Chandigarh | Economics | | 133 | Mohan | Delhi | Computers | +------+---------+------------+------------+ 6 rows in set (0.00 sec)
LIKE 연산자를 활용한 뷰 생성 예제
다음 쿼리는 LIKE 연산자를 사용하여 이름에 'Ra'가 포함된 학생 데이터만 선택하는 뷰 Info를 생성합니다.
mysql> Create or Replace view Info AS SELECT * from student_info WHERE Name LIKE '%Ra%'; Query OK, 0 rows affected (0.11 sec) mysql> Select * from Info; +------+--------+------------+------------+ | id | Name | Address | Subject | +------+--------+------------+------------+ | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | +------+--------+------------+------------+ 3 rows in set (0.00 sec)
위 결과에서 볼 수 있듯이, 이름에 'Ra'가 포함된 Gaurav, Raman, Ram 세 명의 학생만 뷰에 포함되었습니다. 와일드카드 %는 임의의 문자열(0개 이상의 문자)을 의미하므로, 이름 어느 위치든 'Ra'가 포함되면 조건에 해당하게 됩니다.
NOT LIKE 연산자 활용하기
반대로 특정 패턴을 제외한 데이터를 조회하고 싶다면 NOT LIKE 연산자를 사용할 수 있습니다. 아래 예제는 이름에 'Ra'가 포함되지 않은 학생들만 선택하는 뷰입니다.
mysql> Create or Replace view Info AS SELECT * from student_info WHERE Name NOT LIKE '%Ra%'; Query OK, 0 rows affected (0.14 sec) mysql> Select * from info; +------+---------+------------+-----------+ | id | Name | Address | Subject | +------+---------+------------+-----------+ | 101 | YashPal | Amritsar | History | | 132 | Shyam | Chandigarh | Economics | | 133 | Mohan | Delhi | Computers | +------+---------+------------+-----------+ 3 rows in set (0.00 sec)
이처럼 Create or Replace view 구문을 사용하면 기존에 같은 이름의 뷰가 있더라도 자동으로 대체되므로, 조건을 변경하며 반복적으로 테스트하기에 매우 편리합니다. 이번에는 'Ra'가 포함되지 않은 YashPal, Shyam, Mohan 세 명의 데이터만 뷰에 담기게 됩니다.
정리
- 뷰 생성 시 WHERE 절에 LIKE 연산자를 사용하면 패턴 일치 조건에 맞는 데이터만 조회할 수 있습니다.
%는 여러 문자를,_는 단일 문자를 대체하는 와일드카드입니다.- NOT LIKE를 사용하면 특정 패턴을 제외한 나머지 데이터를 선택할 수 있습니다.