SQL은 데이터베이스 내에서 텍스트 데이터를 검색하는 데 많이 사용되는 강력한 도구입니다. 풀 텍스트 검색은 특히 사용자가 키워드를 사용하여 텍스트 데이터를 쉽게 찾을 수 있도록 도와줍니다.
이번 연습문제에서는 SQL에서 데이터 풀 텍스트 검색을 연습해보겠습니다. 아래의 상황에 맞게 SQL 쿼리를 작성해보세요.
문제상황
온라인 서점에서는 고객들이 책을 검색하고 구매할 수 있습니다. 대부분의 고객들은 키워드로 책을 검색하며, 결과 목록에서는 키워드가 책 제목, 저자, 출판사, 또는 설명에 포함되어 있는 책들이 나타납니다.
책 데이터베이스의 구조는 다음과 같습니다:
Table: books | book_id | title | author | publisher | description | |———|————|————|————-|—————————————–| | 1 | The Great Gatsby | F. Scott Fitzgerald | Scribner | A story of the Jazz Age in America | | 2 | To Kill a Mockingbird | Harper Lee | J. B. Lippincott & Co. | Set in the Deep South during the Great Depression | | 3 | 1984 | George Orwell | Secker & Warburg | Dystopian novel set in a totalitarian society | …
문제
주어진 키워드가 책 데이터베이스의 어느 부분에 일치하는지 확인하는 SQL 쿼리를 작성하세요.
입력
- 키워드: “Mockingbird”
출력
- 책 제목, 저자, 출판사, 설명이 주어진 키워드와 일치하는 모든 책들의 정보
SQL 쿼리 작성
SELECT title, author, publisher, description
FROM books
WHERE MATCH (title, author, publisher, description) AGAINST ('+Mockingbird' IN BOOLEAN MODE);
이 쿼리는 books 테이블에서 title, author, publisher, description 열을 검색하며, 주어진 키워드와 일치하는 책들의 정보를 반환합니다. 즉, “Mockingbird”라는 단어를 포함하는 책들을 찾습니다.
이 쿼리에서 사용한 MATCH
및 AGAINST
절은 SQL에서 풀 텍스트 검색을 수행할 수 있게 해주는 MySQL의 내장 함수입니다. AGAINST
에서는 IN BOOLEAN MODE
를 사용하여 부울 검색 모드로 설정했습니다. 이렇게 하면 AND, OR, NOT 등의 논리 연산자를 사용하여 검색 쿼리를 조정할 수 있습니다.
참고 자료
해시태그
#SQL #데이터풀텍스트검색