이번 장에서는 데이터 검색을 간소화하고 복잡한 쿼리를 단순화하는 데 필수적인 도구인 IN 절의 강력한 기능에 대해 알아봅니다. IN 절은 미리 정의된 값 목록에 기반하여 데이터를 필터링할 수 있게 해주는 SQL의 기본 구성 요소입니다.
IN 절이란?
•
고객과 그들의 주문에 대한 정보가 포함된 데이터베이스가 있다고 상상해보세요. 몇몇 고객이 한 주문만을 검색하고자 할 때, 각 고객에 대해 여러 WHERE 조건을 수동으로 지정하는 것은 번거로울 수 있습니다. 이때 IN 절이 도움이 됩니다. IN 절을 사용하면 쿼리 내에 값 목록을 지정할 수 있으며, 데이터베이스는 그 값들 중 하나와 일치하는 결과를 반환합니다. 이는 같은 조건을 여러 번 반복하지 않고도 데이터를 필터링하는 간결한 방법입니다.
구문과 사용법
•
IN 절의 구문은 간단합니다:
◦
SELECT column1, column2, … FROM table_name WHERE column_name IN (value1, value2, …);
◦
column_name은 필터하고자 하는 열을, (value1, value2, …)는 비교 대상이 되는 값 목록을 나타냅니다. 데이터베이스는 주어진 열에서 지정된 값들 중 하나를 포함하는 행을 검색합니다.
개념을 명확히 하는 예제
•
예를 들어, 온라인 서점의 데이터베이스를 관리하고 특정 세트에 속하는 장르의 책에 대한 정보를 검색하고자 한다고 가정해봅시다. 여러 OR 조건을 작성하는 대신, IN 절이 작업을 단순화합니다:
◦
SELECT title, author, genre FROM books WHERE genre IN ('Mystery', 'Thriller', 'Suspense');
◦
이 쿼리는 'Mystery', 'Thriller', 'Suspense' 장르에 속하는 모든 책을 검색합니다.
IN과 서브쿼리 사용하기
•
IN 절의 다재다능함은 단순한 값 목록을 넘어섭니다. 동적으로 비교할 값 목록을 생성하기 위해 서브쿼리를 사용할 수 있습니다. 예를 들어, 특정 금액을 초과하는 주문을 한 고객을 찾고자 한다면 서브쿼리를 사용할 수 있습니다:
◦
SELECT first_name, last_name FROM customers WHERE customer_id IN (SELECT customer_id FROM orders WHERE order_total > 100);
◦
여기서 서브쿼리는 주문 총액이 100보다 큰 주문의 customer_id 값을 검색하고, 외부 쿼리는 서브쿼리의 결과를 바탕으로 고객 이름을 검색합니다.
축하합니다! IN 절의 잠재력을 활용하셨습니다. 이 장에서는 IN 절의 구문, 사용법 및 기능을 설명하는 예제를 다뤘습니다. 고객 데이터, 책 장