본문 바로가기
n8n 이야기

n8n 자동화를 위한 SQL 기본 이해하기

by 주아라기 2024. 12. 15.
반응형

 

목차

     

     

    안녕하세요. 주아라기입니다.
    오늘은 지인과 블로그 이야기를 하다가 나온 주제인 SQL에 대해서 이야기해보려고 합니다.

     

    n8n으로 자동화를 하다 보면 데이터를 필요에 따라 조회해야 하는 상황이 생기게 됩니다. 간단하게는 구글 시트에 저장된 데이터를 조회하기도 하지만 이미 데이터베이스에 저장되어 있는 데이터를 조회하는 경우도 생기게 됩니다. 

     

    이럴 때 사용하는 SQL! 어렵게 느껴지시나요? 🤔

     

    SQL이란?

    SQL(Structured Query Language)은 데이터베이스와 대화하는 언어라고 생각하시면 됩니다.

    데이터베이스에 "이 이름이 '홍길동'인 데이터를 찾아줘!"라고 명령할 수 있는 언어입니다. SQL은 표준 언어로, 데이터베이스 시스템이 이해하고 처리할 수 있는 형태로 데이터를 조회하고, 수정하고, 삭제하는 데 사용됩니다.

     

     

    데이터 조회하기

    SELECT는 SQL에서 데이터를 조회하는 가장 기본적인 명령어입니다. 특정 테이블에서 원하는 데이터를 선택하여 가져올 수 있습니다.

    기본 구문

    /*
    조회할 칼럼을 전체를 조회할 때는 *를 사용할 수 있습니다.
    * : 모든 컬럼을 선택
    */
    SELECT
     column1 -- 조회할 컬럼을 지정합니다. 
    FROM
     table_name -- 데이터를 조회할 테이블을 지정합니다.
    WHERE
     column1 = '1' -- 조건에 맞는 데이터를 필터링합니다. 예를 들어, '1'과 일치하는 데이터를 조회합니다.

     

    GROUP BY 예시

    GROUP BY는 데이터를 특정 컬럼을 기준으로 그룹화하여 집계 함수(예: COUNT, SUM, AVG)와 함께 사용할 수 있습니다. 이를 통해 각 그룹에 대한 집계 결과를 얻을 수 있습니다.

    /*
    orders 테이블에서 각 고객별로 주문 수를 조회하는 쿼리입니다.
    Select에 컬럼은 집계 함수를 이용하거나 그룹화할 컬럼을 반드시 GROUP BY에 사용해야 합니다.
    */
    SELECT
     customer_id, -- 고객 ID를 기준으로 데이터를 그룹화합니다. 
     COUNT(order_id) AS order_count -- 각 고객의 주문 수를 세고, 이를 order_count라는 별칭으로 표시합니다.
    FROM
     orders -- 주문 정보 테이블입니다.
    GROUP BY
     customer_id -- 고객별로 그룹화하여 데이터를 집계합니다.
     

    ORDER BY 예시

    ORDER BY는 조회된 데이터를 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 때 사용합니다.

    /*
    이 쿼리는 제품 가격이 가장 높은 제품부터 차례대로 조회합니다.
    */
    SELECT
      product_name, -- 제품 이름을 선택합니다.
      price -- 제품 가격을 선택합니다.
    FROM
      products -- 제품 정보 테이블입니다.
    ORDER BY
      price DESC -- 가격을 기준으로 내림차순으로 데이터를 정렬합니다.
     

    LIMIT 예시

    LIMIT은 쿼리 결과에서 반환되는 행의 수를 제한하는 데 사용됩니다.

    /*
    employees 테이블에서 급여가 가장 높은 상위 3명의 직원을 조회하는 쿼리입니다.
    */
    SELECT
      employee_name, -- 직원 이름을 선택합니다.
      salary -- 직원 급여를 선택합니다.
    FROM
      employees -- 직원 정보 테이블입니다.
    ORDER BY
      salary DESC -- 급여를 기준으로 내림차순으로 정렬합니다.
    LIMIT 3 -- 결과를 상위 3개로 제한하여 급여가 높은 3명의 직원만 조회합니다.
     

    GROUP BY, ORDER BY, LIMIT 함께 사용하기

    세 가지 구문을 함께 사용하는 예시입니다.

    /*
    이 쿼리는 각 제품의 총 매출을 계산하고, 매출이 가장 높은 5개 제품을 조회합니다.
    */
    SELECT
      product_id, -- 제품 ID를 선택합니다.
      SUM(sale_amount) AS total_sales -- 각 제품의 매출 합계를 계산합니다.
    FROM
      sales -- 판매 정보 테이블입니다.
    GROUP BY
      product_id -- 제품별로 매출을 그룹화합니다.
    ORDER BY
      total_sales DESC -- 매출이 높은 제품부터 내림차순으로 정렬합니다.
    LIMIT 5 -- 상위 5개 제품만 조회합니다.
     

    데이터 추가하기

    새로운 데이터를 추가하는 명령어입니다. 예를 들어, 새로운 책을 도서관에 등록하는 것처럼 데이터를 추가합니다.

    /*
    새로운 데이터를 테이블에 추가하는 쿼리입니다.
    */
    INSERT INTO table_name
      (column1, column2) -- 추가할 컬럼을 지정합니다.
    VALUES
      (value1, value2); -- 각 컬럼에 대응되는 값을 삽입합니다.

     

    데이터 수정하기

    기존 데이터를 수정하는 명령어입니다. 예를 들어, 도서관에 있는 책 정보를 수정하는 것처럼 데이터를 수정합니다.

    /*
    기존 데이터를 수정하는 쿼리입니다.
    */
    UPDATE
      table_name -- 수정할 테이블을 지정합니다.
    SET
      column1 = value1 -- 수정할 컬럼과 새로운 값을 지정합니다.
    WHERE
      condition; -- 어떤 조건에 맞는 데이터만 수정할지 지정합니다.

     

     

    데이터 삭제하기

    데이터를 삭제하는 명령어입니다. 예를 들어, 도서관에서 책을 폐기하는 것처럼 데이터를 삭제합니다.

    /*
    조건에 맞는 데이터를 삭제하는 쿼리입니다.
    */
    DELETE FROM
      table_name -- 삭제할 테이블을 지정합니다.
    WHERE
      condition; -- 삭제할 데이터를 조건에 맞게 필터링합니다.

     

     

    n8n에서 사용하기

     

    n8n에서는 SQL 쿼리를 작성할 때 표현식을 활용하여 데이터를 동적으로 처리할 수 있습니다.

    표현식은 JavaScript와 유사한 문법을 사용하며, {{ }} (이중 중괄호) 안에 작성됩니다. 이를 통해 SQL 쿼리 내에서 변수를 동적으로 처리하거나, 이전 노드에서 나온 데이터를 참조하여 쿼리를 수정할 수 있습니다.

    표현식 예시

    n8n에서 표현식은 노드 실행 결과나 변수를 동적으로 처리할 수 있게 해 줍니다. 예를 들어, 이전에 실행된 노드의 출력을 참조하려면 아래와 같이 사용할 수 있습니다.

    {{ $json["name"] }} 또는 {{ $json.name }}

     

    이 표현식을 사용하면 SQL 쿼리에서 변수 값을 동적으로 처리하거나 다른 노드의 결과를 기반으로 SQL 쿼리를 수정할 수 있습니다.

    동적 SQL 예시

    예를 들어, 회원 테이블에서 특정 도시(도시)에 거주하는 회원들의 이름을 조회하는 쿼리를 실행한다고 가정해 봅시다. 도시 이름은 이전 노드에서 나온 값을 참조하여 동적으로 처리할 수 있습니다.

    SELECT
     이름 
    FROM
     회원 
    WHERE
     도시 = {{ $json["도시"] }}

     

     

    반응형