[TIL] 사전캠프 10일차 _ SQL 퀘스트 #5

Seoyeon Lee·2025년 9월 19일

Today I Learned ...

🖥️ SQL 문법 연습 퀘스트 #5 & 🙃 오늘의 느낀점

오늘은 SQL 퀘스트를 마무리했다!

어제 달리기반 Lv.4 2개의 문제를 풀면서 멘탈이 나갔었는데,
의외로 오늘 푼 Lv.5 2개의 문제는 훨씬 쉽게 풀 수 있었다.

Lv.4와 비슷한 형식이지만, Join 해야하는 테이블의 개수가 2개에서 3개로 늘어난 것 뿐이었다.
이때, 3개의 테이블을 Join 하기 위해서는

select *
from [테이블이름1] a left/inner join [테이블이름2] b on a.[컬럼이름]=b.[컬럼이름]
				  left/inner join [테이블이름3] c on b.[컬럼이름]=c.[컬럼이름];

형식으로 진행할 수 있다.

오늘 튜터님과 질문하는 시간이 있었는데, 새로운 정보를 알게 되었다.
내가 작성할 때는 select → from → where → group by → having → order by 순서로 작성을 한다.
그런데, 이게 실행될 때는 from → where → group by → having → select → order by 순서로 실행이 된다는 것이다.
그래서 만약 서브쿼리를 작성한다고 하면, 그 서브쿼리가 속해있는 곳 내에서 다시 저 순서대로 실행이 되는 것이다.

select *
from C c
having ... = (
		select ...
		from B b
		where b.Country = c.Country
		)sq
	);

어제 문제를 풀면서 위와 같은 형식의 답을 만났었다.
나는 단순히 서브쿼리가 가장 먼저 실행될 것이라고 생각을 했었다.
그래서 c라는 alias가 어떻게 서브쿼리 안에서 실행될 수 있는 것인지가 궁금했는데,
having 안에 있는 서브쿼리였기 때문에 앞서 from에서 선언된 alias가 작동된 것이다.

이제야 뭔가 SQL을 제대로 이해할 수 있게 된 것 같다.

나중에 필요할 때 바로바로 SQL을 작성해서 사용할 수 있도록 계속 연습해봐야겠다.

profile
백엔드 개발자 지망생

0개의 댓글