# 구동 환경 : Postgre SQL 12.3 설치 -> pgAdmin4에서 아래 DB 연동 -> DBeaver 7.1.2 버전에서 코딩 진행
# 활용하는 DB = dvdrental.tar
PostgreSQL의 IN 연산자: 사용 이유와 중요성
IN 연산자는 SQL 쿼리에서 지정한 값 목록 중 하나와 일치하는 행을 조회하는 데 사용됩니다. 이 연산자는 데이터베이스 관리 및 분석에서 매우 유용합니다. 왜 IN 연산자를 사용해야 하며, 무엇이 중요한지에 대해 자세히 살펴보겠습니다.
IN 연산자를 사용하는 이유
- 다중 값 조건 필터링: IN 연산자는 여러 값을 한 번에 비교할 수 있어 특정 열의 값이 여러 값 중 하나와 일치하는지 쉽게 필터링할 수 있습니다. 예를 들어, 특정 부서의 직원들을 조회할 때 유용합니다.
- 가독성 향상: 복잡한 OR 조건을 사용하는 대신 IN 연산자를 사용하면 쿼리가 더 간결하고 읽기 쉬워집니다. 이는 쿼리 작성과 유지 보수를 용이하게 합니다.
- 효율적인 쿼리 작성: IN 연산자는 여러 개의 OR 조건을 사용하는 것보다 효율적이며, 쿼리를 단순화하고 실행 계획을 최적화하는 데 도움이 됩니다.
- 서브쿼리와 결합: IN 연산자는 서브쿼리와 결합하여 동적으로 생성된 값 집합을 기준으로 데이터를 필터링할 수 있습니다. 이는 복잡한 데이터 조회 시 유용합니다.
IN 연산자의 중요성
- 데이터 정확성 향상: 여러 값을 기준으로 데이터를 정확하게 필터링할 수 있어, 필요한 데이터만 정확하게 추출할 수 있습니다. 이는 데이터 분석과 보고서 작성에서 중요한 역할을 합니다.
- 쿼리 성능 최적화: IN 연산자는 여러 OR 조건을 대체하여 쿼리 성능을 최적화할 수 있습니다. 이를 통해 데이터베이스의 응답 시간을 줄이고, 효율적인 데이터 처리가 가능합니다.
- 유연한 데이터 접근: IN 연산자는 다양한 데이터 접근 시나리오를 지원합니다. 예를 들어, 특정 고객 집합에 대한 데이터를 조회하거나, 특정 상태의 주문을 필터링하는 등 다양한 상황에서 활용할 수 있습니다.
- 코드 유지 보수성 향상: IN 연산자를 사용하면 쿼리가 간결해져 코드의 가독성이 향상됩니다. 이는 쿼리의 유지 보수성과 수정 용이성을 높입니다.
IN 연산자의 활용
- 단순 값 목록 필터링: employees 테이블에서 특정 부서의 직원들을 조회합니다.
- 숫자 값 목록 필터링: products 테이블에서 특정 제품 ID의 제품들을 조회합니다.
- 서브쿼리와 결합: 서브쿼리를 사용하여 동적으로 생성된 값 집합을 기준으로 데이터를 필터링합니다. 예를 들어, 특정 고객의 주문을 조회합니다.
- NOT IN 사용: IN 연산자의 반대 개념으로, 특정 값 집합에 포함되지 않는 행을 조회할 수 있습니다. 예를 들어, 특정 부서가 아닌 직원들을 조회합니다.
IN 연산자는 특정 집합(컬럼 혹은 리스트)에서 특정 집합 혹은 리스트가 존재하는지 판단하는 연산자입니다.
SELECT
CUSTOMER_ID -- 컬럼 선택
,RENTAL_ID -- 컬럼 선택
,RETURN_DATE -- 컬럼 선택
FROM RENTAL -- 테이블 선택
WHERE
CUSTOMER_ID IN (1,2) -- CUSTOMER_ID가 1 혹은 2인 행을 출력
ORDER BY RETURN_DATE DESC; -- 그 결과를 RETURN_DATE 컬럼 내림차순으로 출력
결과가 잘 출력되었습니다.
이번에는 동일한 결과를 IN 대신 OR를 활용해 확인해보겠습니다.
SELECT
CUSTOMER_ID -- 컬럼 선택
,RENTAL_ID -- 컬럼 선택
,RETURN_DATE -- 컬럼 선택
FROM RENTAL -- 테이블 선택
WHERE
CUSTOMER_ID = 1 -- CUSTOMER_ID가 1
OR CUSTOMER_ID = 2 -- 혹은 2인 행을 출력
ORDER BY RETURN_DATE DESC; -- 그 결과를 RETURN_DATE 컬럼 내림차순으로 출력
동일한 결과가 나왔습니다.
이번에는 NOT을 활용하여 다른 방식으로 진행해보겠습니다.
SELECT
CUSTOMER_ID -- 컬럼 선택
,RENTAL_ID -- 컬럼 선택
,RETURN_DATE -- 컬럼 선택
FROM RENTAL -- 테이블 선택
WHERE
CUSTOMER_ID NOT IN (1,2) -- CUSTOMER_ID가 1이 아니고 2도 아닌 행을 출력
ORDER BY RETURN_DATE DESC; -- 그 결과를 RETURN_DATE 컬럼 내림차순으로 출력
위 결과를 IN 연산자와 다른 방식으로 다시 진행해보겠습니다.
SELECT
CUSTOMER_ID -- 컬럼 선택
,RENTAL_ID -- 컬럼 선택
,RETURN_DATE -- 컬럼 선택
FROM RENTAL -- 테이블 선택
WHERE
CUSTOMER_ID <> 1 -- CUSTOMER_ID가 1이 아니고
AND CUSTOMER_ID <> 2 -- 2도 아닌 행을 출력
ORDER BY RETURN_DATE DESC; -- 그 결과를 RETURN_DATE 컬럼 내림차순으로 출력
동일한 결과가 출력되었습니다.
이번에는 서브 쿼리를 활용하여 진행해보겠습니다.
SELECT
CUSTOMER_ID -- 컬럼 선택
,RETURN_DATE -- 컬럼 선택
FROM
RENTAL -- 테이블 선택
WHERE
CAST (RETURN_DATE AS DATE) = '2005-05-27'; -- RETURN_DATE가 2005년 5월 27일인 CUSTOMER_ID를 출력
위 조건을 가지고 IN연산자를 활용해보겠습니다.
SELECT
FIRST_NAME
,LAST_NAME
FROM
CUSTOMER
WHERE CUSTOMER_ID IN( -- return_date가 2005년 5월 27일 CUSTOMER_ID의
SELECT -- FIRST_NAME과 LAST_NAME을 출력
CUSTOMER_ID
FROM
RENTAL
WHERE
CAST (RETURN_DATE AS DATE) = '2005-05-27');
-- RETURN_DATE가 2005년 5월 27일인 CUSTOMER_ID를 출력
이런식으로 다른 테이블에 있는 값도 조건을 주고 불러올 수 있습니다,
결론
PostgreSQL의 IN 연산자는 여러 값을 한 번에 비교하여 데이터를 필터링하는 데 매우 유용한 도구입니다. 이를 통해 쿼리 작성이 간결해지고, 코드 가독성과 유지 보수성이 향상되며, 쿼리 성능을 최적화할 수 있습니다. IN 연산자를 잘 활용하면 데이터베이스 작업이 훨씬 더 효율적이고 효과적으로 이루어질 것입니다.
다음에는 BETWEEN 연산자에 대해서 보도록 하겠습니다.
'데이터 분석 > Postgre SQL - 정리하자' 카테고리의 다른 글
LIKE 연산자는? (0) | 2024.07.12 |
---|---|
BETWEEN 연산자란? (0) | 2024.07.12 |
Fetch문을 왜 사용해야 할까? (0) | 2024.07.11 |
Limit 문은 언제 어떻게 쓰일까? (0) | 2024.07.10 |
Where 문 활용하기 (0) | 2024.07.10 |