• Home
  • About
    • 최정재 photo

      최정재

      창의적인 시각으로 다양한 가능성을 탐색하는 개발의 모험가

    • Learn More
    • Email
    • Instagram
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags
    • All Categories
  • Projects

[SQLD] 연산자 우선순위, SELECT문 실행순서

21 Feb 2024

Reading time ~1 minute

연산자 우선순위

산술 연산자 (*, /, +, -)  
연결 연산자 (||)  
비교 연산자 (<, >, <=, >=, <>, =)  
IS NULL, LIKE, IN  
BETWEEN  
NOT 연산자  
AND 연산자  
OR 연산자  

위에서 부터 밑으로 순이다.

SELECT문 실행 순서

FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 순이다.

유의점

FROM 절에서 조회할 테이블을 선택 후 ON 절이 실행 되고 다음 JOIN을 한후 WHERE절이 실행된다.
WHERE 하고 ON이 비슷해보여도 순서의 차이가 있어 직접 해보면 다른 값이 나올것이다.

table1

COL1 COL2
1 4
2 5
3 6

table2

COL1 COL2
1 7
2 8
SELECT * FROM table1 t1 LEFT JOIN table2 t2  
    ON (t1.COL1 = t2.COL1) WHERE t2.COL2 = 7;  

결과테이블1

COL1 COL2 COL1 COL2
1 4 1 7

출력된다. JOIN후 WHERE에 의해서 COL2인 것만 나왔기 때문이다.

SELECT * FROM table1 t1 LEFT JOIN table2 t2  
    ON (t1.COL1 = t2.COL1 AND t2.COL2 = 7);

ON절에 조건을 다넣어주면 어떻게 출력이 될까?

결과테이블2

COL1 COL2 COL1 COL2
1 4 1 7
2 5 NULL NULL
3 6 NULL NULL

형식으로 ON절이 수행된후 LEFT JOIN 된 결과를 확인 할 수 있다.



SQLD Share Tweet +1