JOIN(+CROSS, SELF)
OUTER JOIN의 명령어에 따라 JOIN후 결과물이 매우 달라진다. 아래 그림은 OUTER JOIN 명령어에 따라 테이블 A,B의 내용이 JOIN후 어떻게 나타나는지 설명한 벤 다이어그램이다.
앞서 INNER/OUTER JOIN을 살펴보았는데, JOIN에는 CROSS JOIN과 셀프 JOIN도 존재한다. CROSS JOIN은 기본적으로 SELECT * FROM <첫 번째 테이블> CROSS JOIN <두 번째 테이블>의 형식을 가지며 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시킨다. 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼이며, CROSS JOIN은 일종의 CARTESIAN PRODUCT라고 보면 된다. 셀프 조인은 따로 명령어가 있는 것은 아니며, JOIN명령어를 같은 테이블로 수행하면 셀프 조인이 된다.
JOIN문과 서브쿼리를 이용해서 다양한 SELECT문을 작성해보았다. 실제 수업을 통해 서브쿼리를 통해 일부 JOIN문을 대체할 수 있는 여러 예시들을 공부하기도 하였다. 대부분의 SQL문은 SELECT문을 사용하는게 대부분이라는데, 사실상 내가 처음 생각한 데이터베이스는 실제 유저에게 암호를 지정하고, 사용권한 부여, 보안수준 지정같은 DCL에 가까운 부분이었다. 데이터베이스 상급자에게만 그러한 권리를 부여하는 것일까?