PostgreSQL
SQL이 뭐지? 9강 시작합니다.
이번 강의에서는
▶ IN operator syntax
에 대해서 알아보겠습니다.
1. IN operator syntax
● 기본 구문 ●
WHERE 절에서 IN 연산자를 사용하여 값이 목록의 값과 일치하는지 확인합니다.
IN 연산자의 구문은 다음과 같습니다.
value IN (value1,value2,...)
값 목록은 숫자, 문자열 또는
다음과 같은 SELECT 문의 결과가 될 수 있습니다.
value IN (SELECT column_name FROM table_name);
괄호 안의 쿼리를 하위 쿼리라고 하며, 이는 다른 쿼리 안에 중첩된 쿼리입니다.
하위 쿼리에 대한 자세한 내용은 후속 Subquery 강의에서 하겠습니다.
♥ 실습 1 ♥
고객 ID 1과 2의 렌털 정보를 알고 싶다고 가정하면
다음과 같이 WHERE 절에 IN 연산자를 사용할 수 있습니다.
SELECT customer_id
, rental_id
, return_date
FROM
rental
WHERE
customer_id IN (1, 2)
ORDER BY
return_date DESC
;
♥ 실습 2 ♥
다음 쿼리는 IN 연산자 대신 등호(=) 연산자와 OR 연산자를 사용합니다. (실습 1)의 쿼리와 동일합니다.
SELECT
rental_id
, customer_id
, return_date
FROM
rental
WHERE
customer_id = 1
OR customer_id = 2
ORDER BY
return_date DESC
;
IN 연산자를 사용하는 쿼리는 동일한 (=) 및 OR 연산자를 사용하는 쿼리보다 짧고 읽기 쉽습니다.
게다가, SQL은 OR 연산자 목록을 사용하는 쿼리보다 훨씬 빠르게 IN 연산자를 사용하여 쿼리를 실행합니다.
♥ 실습 3 ♥
IN 연산자와 NOT 연산자를 결합하여 값이 목록의 값과 일치하지 않는 행을 선택할 수 있습니다.
예를 들어, 쿼리는 고객 ID가 1 또는 2인 모든 렌털을 찾습니다.
SELECT
customer_id
, rental_id
, return_date
FROM
rental
WHERE
customer_id NOT IN (1, 2)
;
1000개의 행이 추출되었습니다.
♥ 실습 4 ♥
IN 연산자와 마찬가지로 not equal(<>) 및 AND 연산자를 사용하여
NOT IN 연산자와 같은 결과를 추출할 수 있습니다..
SELECT
customer_id
, rental_id
, return_date
FROM
rental
WHERE
customer_id <> 1
AND customer_id <> 2
;
쿼리를 실행하고 (실습 3)의 결과와 같은지 확인해보세요.
NOT IN과의 속도는 비슷합니다.
♥ 실습 5 ♥
다음 쿼리는 대여 테이블에서 반환 날짜가 2005-05-27인 고객 ID 목록을 반환합니다.
SELECT customer_id
FROM rental
WHERE CAST (return_date AS DATE) = '2005-05-27'
ORDER BY customer_id
;
※ CAST 함수는 데이터 형식 변환 함수입니다. timestamp에서 date로 형 변환하였습니다.
자세한 내용은 함수 강의 시간에 하겠습니다.
♥ 실습 6 ♥
서브 쿼리는 값 목록을 반환하므로 다음과 같이 IN 연산자의 입력으로 사용할 수 있습니다.
SELECT
customer_id
, first_name
, last_name
FROM
customer
WHERE
customer_id IN (
SELECT customer_id
FROM rental
WHERE CAST (return_date AS DATE) = '2005-05-27'
)
ORDER BY customer_id
;
(실습 5)에서는 고객 id만 추출하였으나
(실습 6)에서는 서브 쿼리를 사용해서 고객의 이름 및 성까지 추출하였습니다.
서브 쿼리에 대한 자세한 내용은 추후 강의에서 다시 하겠습니다..
지금까지 값이 목록의 값과 일치하는지 확인하는 IN 연산자에 대해 공부했습니다.
다음 시간에 만나요. 안녕 ~~~
본 강의는 PostgreSQL Tutorial을 참조합니다.
실습용 테이블에 대해서는 3강을 참조하세요.
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
11강 SQL이 뭐지? PostgreSQL : LIKE, ILIKE operator (2) | 2022.12.16 |
---|---|
10강 SQL이 뭐지? PostgreSQL : BETWEEN operator (5) | 2022.12.15 |
8강 SQL이 뭐지? PostgreSQL LIMIT와 FETCH (3) | 2022.12.14 |
7강 SQL이 뭐지? WHERE 절 (3) | 2022.12.13 |
6강 SQL이 뭐지? SELECT DISTINCT 뽀개기 (3) | 2022.12.13 |
댓글