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

MySQL 키워드 검색 구현 방법: LIKE 연산자 완벽 가이드

MySQL에서 키워드 검색을 구현하는 방법

MySQL에서 특정 키워드가 포함된 데이터를 검색하려면 LIKE 연산자를 사용하는 것이 가장 일반적인 방법입니다. LIKE 연산자는 와일드카드 문자인 %(임의의 문자열)와 함께 사용되어, 컬럼 값에 특정 키워드가 포함되어 있는지 확인할 수 있습니다.

기본 문법

SELECT * FROM yourTableName
WHERE yourColumnName LIKE '%키워드명%'
OR yourColumnName LIKE '%다른키워드%';

여러 개의 키워드를 동시에 검색하려면 위와 같이 OR 조건을 연결하여 사용합니다.

예제로 배우는 키워드 검색

실제 동작을 이해하기 위해 먼저 테스트용 테이블을 생성해 보겠습니다.

1. 테이블 생성

mysql> CREATE TABLE KeywordSearchDemo
    -> (
    -> StudentId INT,
    -> StudentName VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.86 sec)

2. 데이터 삽입

INSERT 명령어를 사용하여 샘플 레코드를 추가합니다.

mysql> INSERT INTO KeywordSearchDemo VALUES(100,'Adam John');
Query OK, 1 row affected (0.40 sec)

mysql> INSERT INTO KeywordSearchDemo VALUES(101,'John Smith');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO KeywordSearchDemo VALUES(103,'John Taylor');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO KeywordSearchDemo VALUES(104,'Carol Taylor');
Query OK, 1 row affected (0.21 sec)

mysql> INSERT INTO KeywordSearchDemo VALUES(105,'Maria Garcia');
Query OK, 1 row affected (0.20 sec)

mysql> INSERT INTO KeywordSearchDemo VALUES(106,'James Smith');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO KeywordSearchDemo VALUES(110,'Mike Brown');
Query OK, 1 row affected (0.22 sec)

3. 전체 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> SELECT * FROM KeywordSearchDemo;

실행 결과는 다음과 같습니다.

+-----------+--------------+
| StudentId | StudentName  |
+-----------+--------------+
|       100 | Adam John    |
|       101 | John Smith   |
|       103 | John Taylor  |
|       104 | Carol Taylor |
|       105 | Maria Garcia |
|       106 | James Smith  |
|       110 | Mike Brown   |
+-----------+--------------+
7 rows in set (0.00 sec)

특정 키워드로 검색하기

이제 'John' 또는 'Taylor'라는 키워드가 이름에 포함된 학생만 조회하는 쿼리를 실행해 보겠습니다.

mysql> SELECT StudentName FROM KeywordSearchDemo
    -> WHERE StudentName LIKE '%John%' OR StudentName LIKE '%Taylor%';

'John'과 'Taylor' 키워드가 포함된 레코드만 출력됩니다.

+--------------+
| StudentName  |
+--------------+
| Adam John    |
| John Smith   |
| John Taylor  |
| Carol Taylor |
+--------------+
4 rows in set (0.10 sec)

StudentId 컬럼까지 함께 조회하기

SELECT 절에 컬럼을 추가하거나 *를 사용하면 학번(StudentId)까지 함께 반환받을 수 있습니다.

mysql> SELECT * FROM KeywordSearchDemo
    -> WHERE StudentName LIKE '%John%' OR StudentName LIKE '%Taylor%';

실행 결과는 다음과 같습니다.

+-----------+--------------+
| StudentId | StudentName  |
+-----------+--------------+
|       100 | Adam John    |
|       101 | John Smith   |
|       103 | John Taylor  |
|       104 | Carol Taylor |
+-----------+--------------+
4 rows in set (0.00 sec)

추가 팁: 성능 최적화

LIKE 연산자는 간단하지만, 데이터 양이 많아지면 인덱스를 활용하지 못해 검색 속도가 느려질 수 있습니다. 대량의 텍스트 데이터에서 빠른 키워드 검색이 필요하다면 다음 방법을 고려해 보세요.

  • FULLTEXT 인덱스: MATCH ... AGAINST 구문과 함께 사용하면 자연어 기반의 빠른 전문 검색이 가능합니다.
  • REGEXP 연산자: 정규표현식 패턴 매칭이 필요한 복잡한 검색 조건에 유용합니다.

소규모 프로젝트나 간단한 조건 검색에는 LIKE 연산자만으로도 충분히 효율적입니다.