| 상황 | 반환 결과 |
|---|---|
| GROUP BY 없음 + WHERE 조건 불충족 + COUNT(*) | 1행 반환(COUNT = 0) |
| GROUP BY 없음 + WHERE 조건 불충족 + SUM/AVG/MAX/MIN | 1행 반환(NULL) |
| GROUP BY 있음 + HAVING 조건 불충족 | 공집합(결과 행 없음) |
SELECT 컬럼1, 집계함수)컬럼2
FROM 테이블명
WHERE 행 조건식
GROUP BY 컬럼1
HAVING 그룹 조건식
ORDER BY 컬럼1;
PK-FK)의 값이 일치하는 행끼리 연결= 연산자를 사용하는 조인=, BETWEEN, <, > 등도 사용 가능하므로 모두 Equi Join은 아님SELECT E.EMP_NAME, E.DEPT_ID, D.DEPT_NAME
FROM EMPLOYEE E, DEPARTMENT D
WHERE E.DEPT_ID = D.DEPT_ID;
SELECT E.EMP_NAME, E.DEPT_ID, D.DEPT_NAME
FROM EMPLOYEE E
INNER JOIN DEPARTMENT D ON E.DEPT_ID = D.DEPT_ID;
LEFT JOIN = LEFT OUTER JOIN)SELECT E.EMP_NAME, E.DEPT_ID, D.DEPT_NAME
FROM EMPLOYEE E, DEPARTMENT D
WHERE E.DEPT_ID = D.DEPT_ID;
SELECT E.EMP_NAME, E.DEPT_ID, D.DEPT_MAME
FROM EMPLOYEE E
LEFT OUTER JOIN DEPARTMENT D ON E.DEPT_ID = D.DEPT_ID
ORDER BY E.EMP_ID;
SELECT E.EMP_NAME,
COALESCE(E.DEPT_ID, D.DEPT_ID) AS DEPT_ID,
D.DEPT_NAME
FROM EMPLOYEE E
FULL OUTER JOIN DEPARTMENT D ON E.DEPT_ID = D.DEPT_ID
ORDER BY COALESCE(E.DEPT_ID, D.DEPT_ID), E.EMP_ID;
SELECT E.EMP_NAME,
COALESCE(E.DEPT_ID, D.DEPT_ID) AS DEPT_ID,
D.DEPT_NAME
FROM EMPLOYEE E, DEPARTMENT D
WHERE E.DEPT_ID = D.DEPT_ID (+) -- Left Outer Join
UNION
SELECT E.EMP_NAME,
COALESCE(E.DEPT_ID, D.DEPT_ID) AS DEPT_ID,
D.DEPT_NAME
FROM EMPLOYEE E, DEPARTMENT D
WHERE E.DEPT_ID (+) = D.DEPT_ID; -- Right Outer Join