🌻TMI🌻
진도를 나갈 수록 어렵다는 생각이 들지만 실무에서 자유자재로 사용할 수만 있다면 세계가 확장되는 느낌을 받을 것 같다.

SQL뿐만이 아니라 파이썬, 피그마 등 데이터와 시각화 능력이 퍼포먼스 마케터 구인 글에 올라오는 우대 사항에 왜 항상 올라오는지 알 것 같다.

그러면 앞으로 조건절이나 다른 연산은 한 줄만 쓸 수 있는건가요?

여러 번의 연산을 한 번의 SQL문으로 해결할 수 있다.
계속해서 WHERE, IF, CASE WHEN 등으로 쭉쭉 아래로 내려가다보면
데이터 처리 시간은 당연히 길어질 것이다. 이건 우리가 원하는 방향이 아니다.

그래서 우리는 서브쿼리(Subquery)문을 통해 한 번으로 복잡한 연산을 줄이게 될 것이다.

예를 들어,

  • 여러 번의 연산을 사용해야 할 때
  • 조건문에 연산 결과를 사용해야 할 때
  • 조건문에 쿼리 결과를 사용하고 싶을 때

등이 있다.

SELCET 컬럼1, 컬럼2, 별칭_컬럼
FROM
( /* 서브쿼리문 a 시작 */
SELCET column1, column2 special_column
FROM table1
) AS a

의 문장 구조를 가지고 있다. 서브쿼리라는 말에 걸맞게 메인 쿼리 안에 괄호()로 묶여있는 구조를 가지고 있다.

별칭도 정할 수 있기 때문에 해당 서브쿼리문의 연산만 계산하고자 할 때에도 용이하다.

조금 더 구체적인 예시를 가지고 생각해보자.

나에게 신림동의 음식점 별 정보가 있다고 가정해보자.
나는 음식 준비 시간이 25분보다 초과한 음식점 명의 데이터를 필요로 한다.
이럴 때에 서브 쿼리문으로 간단히 작성할 수 있다.

SELECT restaurant_name, 
       IF(over_time>=0, over_time, 0) AS over_time
FROM
(
SELECT restaurant_name, food_preparation_time-25 AS over_time
FROM food_orders
)
AS a

이렇듯 쿼리문과 서브쿼리문을 사용해서 간단하게 쿼리문을 작성하는 법을 알았다.

필요한 데이터가 서로 다른 테이블에 있을 때는 어떤걸 사용하나요?

필요한 데이터가 나뉘어져 있을 때는 여러 테이블에서 데이터를 불러와야 한다.

이때 필요한 것이 'JOIN' 이다.

두 가지의 테이블이 가지고 있는 공통된 테이블을 불러와서 하나로 합쳐주는 기능을 한다.

'JOIN'은 두 가지의 경우로 나뉠 수 있다.

  • LEFT JOIN : 공통 컬럼을 기준으로 하나의 테이블에 값이 없더라도 모두 조회하는 경우

  • INNER JOIN : 공통 컬럼을 기준으로 두 테이블 모두에 있는 값만 조회하는 경우

-- LEFT JOIN
select
조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명

-- INNER JOIN
select
조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명

이렇게 서로 다른 JOIN문이 필요할 때를 생각해서 JOIN문을 사용해야 한다.

오늘의 SQL 요약

▶ 여러 개의 조건문을 쓰지 않아도 서브쿼리문으로 간단하게 작성할 수 있다.

▶ 데이터가 흩어져 있을 때는 JOIN 을 사용하자.

▶ 복습을 꾸준히 하자

profile
공부를 위해 기록하는 공간

4개의 댓글

comment-user-thumbnail
2025년 5월 12일

이너조인 레프트조인 너무 어려워요,, 고양이 표정 = 내 표정

답글 달기
comment-user-thumbnail
2025년 5월 12일

SQL의 관해서 요약을 잘 해놓은 것 같아요~ 보기 좋아용!

답글 달기
comment-user-thumbnail
2025년 5월 12일

SQL 입문자로서 어렵게 느껴지는 서브쿼리문과 조인 사용법을 질문과 답 형식으로 알려주셔서 읽으면서 같이 공부하는 기분이었어요 :)

답글 달기
comment-user-thumbnail
2025년 5월 12일

서브쿼리랑 조인문 저도 어려워서 못하고 있는데.. 요약 해주셔서 감사합니다 (_ _)

답글 달기