본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

9강 SQL이 뭐지? PostgreSQL : IN에 대해서

by DoitSQL 2022. 12. 15.
728x90

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을 참조합니다. 

 

PostgreSQL Tutorial - Learn PostgreSQL from Scratch

Welcome to the PostgreSQLTutorial.com website! This PostgreSQL tutorial helps you understand PostgreSQL quickly. You’ll master PostgreSQL very fast through many practical examples and apply the knowledge in developing applications using PostgreSQL. If yo

www.postgresqltutorial.com

실습용 테이블에 대해서는 3강을 참조하세요.

 

3강 SQL이 뭐지? 도구들을 설치해보자. ( PostgreSQL, HeidiSQL )

지난 시간까지 SQL이 뭔지 대충 감을 잡는 시간을 가졌습니다. 이번 시간에는 본격적인 SQL을 공부하기 위해서 도구들을 설치해 보겠습니다. 1. PostgreSQL 설치 ( Windows10 64bit 기준) 2. HeidiSQL 설치 3.

doitsql.tistory.com


728x90

댓글