DEV Community

orca orcinus
orca orcinus

Posted on

SQL 공부를 시작할 때 반드시 알아야할 것

이 글을 누른 독자는
SQL을 학습하다 막혀서 검색한 사람일 것으로 가정하고 작성한다.
어떤 목적으로 SQL을 학습하는지는 모르지만 반드시 알아야할 것이 있다.
지금 SQL을 배우는 곳에서 분명히 예약어를 하나씩 알려줄 건데
그렇게 배우면 지식이 파편화돼서 힘들어지는 순간이 분명히 온다

C, 자바, 파이썬 같은 프로그래밍 언어들은 문법을 하나 배우면
내가 필요한 곳 혹은 쓰고싶은 곳에 넣으면서 각각이 독립적으로 기능하는데
SQL은 커다란 틀이 정해져있어서
작성 순서를 반드시 지켜야하고
해당 절 안에서 사용 가능한 예약어가 무엇인지 알아야한다.

그래서 쿼리문의 전체 구조를 먼저 알아야 한다.
지금부터 아래의 순서로 글을 작성하겠다.

<목차>

SQL의 틀
SQL의 실제 작동 순서
서브쿼리 VS WITH(=CTE)

1. SQL의 틀

우선 전체 틀을 보여줄테니 외우자.

이것이 SQL의 기본 틀이다.
'틀'이라는 것은 정해진 규칙이니까
의구심을 갖지 말고 외워서 따르도록 한다.
줄바꿈 공백 부분도 의도된 것이니 외우자.

2. SQL의 실제 작동 순서

이것이 SQL의 실제 작동 순서이다.
SELECT는 사실 HAVING 다음에 실행된다. (다음 글에서 추가 설명)

SQL이라는 것은 결국 이 덩어리가 계속 반복되는 것이다.(조회 기준)
이것을 빨리 깨닫는 것이 매우매우 중요하다.
저 덩어리가 계속 반복되면서
WITH 전처리를 하거나
ORDER BY, LIMIT 출력을 조절하거나
UNION 다른 덩어리와 이어주는 것이다

3. 서브쿼리 vs WITH(=CTE)

반복되는 덩어리는 '서브쿼리' 형태로
덩어리 안에서조차 반복된다.

서브쿼리는 이 위치에서 사용 가능하다.
그런데 쿼리문을 쓰다보면
서브쿼리와 WITH 무엇을 쓸까? 고민되는 순간이 생기는데
한 번만 쓰는 경우 or 단일 값 필요 -> 서브쿼리
나머지 -> 싹다 WITH

이렇게 사용하면 아주 좋다.
아 그리고 너무나 당연하게도
WITH 내부에서조차 저 덩어리가 반복된다.

//추가
서브쿼리, WITH 외에 추가로 VIEW 가 있다.
VIEW를 써야하는 경우도 분명히 있어서 선택을 해야하는데
대부분의 경우 서브쿼리, VIEW 보다 WITH를 쓰는것이 좋다.

Top comments (0)