연산자 우선순위
산술 연산자 (*, /, +, -)
연결 연산자 (||)
비교 연산자 (<, >, <=, >=, <>, =)
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 된 결과를 확인 할 수 있다.