출처 } https://gent.tistory.com/571
COUNT(*)를 사용하면 NULL도 포함하여 전부 COUNT 합니다.
COUNT(컬럼명)을 사용하면 NULL 값은 제외하고 COUNT 합니다.
COUNT( DISTINCT( ColumnName ) )으로 하면 중복되지 않고 NULL은 제외되는 값들만 COUNT 하게 됩니다
LEFT의 의미는 왼쪽 테이블을 기준 테이블로 지정한다는 의미이다. ( emp LEFT OUTER JOIN dept )
조인된 dept 테이블에 데이터가 있을 경우 부서명(b.name)을 표시하고
dept 테이블에 존재하는 부서코드(deptno) 10,20, 30은 정상적으로 조인이 되며 부서명을 표시할 수 있다.
deptno = 90은 조인이 되지 않기 때문에 부서명을 표시할 수 없다.
아우터 조인은 조인할 테이블(dept)과 조인이 되지 않더라도 기준 테이블(emp)의 모든 데이터는 출력된다.
조인되지 않은 데이터는 조인 테이블의 데이터를 끌어와서 표시할 수 없다. (NULL로 표시)
아우터 조인의 핵심은 메인 테이블의 데이터는 무조건 조회가 되고 조인 테이블은 참조 용도로만 사용된다.
https://gent.tistory.com/469 참고
아우터 조인을 사용하는 이유는 기준 테이블의 데이터가 모두 조회(누락 없이) 되고, 대상 테이블에 데이터가 있을 경우 해당 컬럼의 값을 가져오기 위해서이다.
아우터 조인을 할 대상 테이블(dept)의 컬럼에 "(+)" 기호를 붙여서 조인한다.
기준 테이블(emp)의 deptno가 대상 테이블(dept)에 존재 할 경우 부서명(dname)를 가져오고 없으면 NULL로 조회된다.
기준 테이블(emp)의 데이터는 대상 테이블(dept)에 값이 없어도 모두 조회 되어야 한다.