정말 기본적인 내용이지만 굉장히 중요하고 잘 숙지를 못한다면
제대로 작성했는데 왜 쿼리가 실행이 안될까.. 하며 시간을 소비할 수 있는 내용이다(경험)
쿼리의 작성순서와 실제 실행되는 순서는 다르다.
SQL 작성 순서
1. SELECT 컬럼명
2. FROM 테이블
3. WHERE 조건식
4. GROUP BY 컬럼명
5. HAVING 조건
6. ORDER BY 컬럼
정확히 기억이 안나지만 처음 해당 내용에 의문이 생긴건
select count(*) as cnt
from user_T
where cnt > 1
이런 내용의 쿼리가 실행안될때였는데 지금 생각하면 상당히 웃픈 상황이지만
작성순서대로 쿼리가 실행된다고 생각하고 나는 cnt 라고 별칭을 줬는데 왜 실행이 안될까 했었다.
SQL 실행 순서
1. FROM 테이블
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. CUBE, ROLL UP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
실제로는 위에 순서로 실행된다. (자주 사용되는 문법 파란색 표기)
위의 쿼리가 실행안된이유는 FROM 시점에 cnt 라는 컬럼이 없는데 select하겠다고 했으니 발생한것으로 생각된다.
SELECT *
FROM (
SELECT count(*) as cnt
FROM user_T
)
WHERE cnt > 1
이런 식으로 FROM 시점에 cnt가 존재하도록 괄호로 한 번 감싸면 정상적으로 실행된다.
'DBMS' 카테고리의 다른 글
[RDBMS] INDEX란? (0) | 2022.08.19 |
---|
댓글