기본적인 조인의 사용법이다.
그냥 FROM 절에 테이블 2개 이상을 적으면 알아서 조인을 해준다.
+
=
다만 이러면 CROSS JOIN으로 카티션 곱을 해서 데이터를 보여준다.
카티션 곱이란 데이터로 만들 수 있는 경우의 수를 전부 만들어 주는 것이다.
( 단, 순서만 바꾼 같은 데이터는 없다 )
이름 | 반 |
홍길동 | 1 |
아무개 | 2 |
반 | 선생님 |
1 | 김 |
2 | 이 |
3 | 박 |
위의 두 테이블을 CROSS JOIN 하면 아래의 테이블이 나온다.
이름 | 반 | 선생님 |
홍길동 | 1 | 김 |
홍길동 | 2 | 이 |
홍길동 | 3 | 박 |
아무개 | 1 | 김 |
아무개 | 2 | 이 |
아무개 | 3 | 박 |
이처럼 만들수 있는 모든 경우의 수를 만들어서 보여주는걸 기본 조인인 CROSS JOIN이라 한다.
따라서 WHERE절에 조건을 넣어서 우리가 원하는 데이터를 얻어야한다.
위의 데이터에서 원하는 값을 얻기 위해서는 WHERE절에 서로 반이 같은지 확인해야 할 것이다.
이런 식으로 학생의 반과 선생님의 반이 같은지 조건을 걸어서 원하는 데이터를 얻었다.
만약 이런식으로 데이터를 얻었다면 INNER JOIN을 사용한 것이다.
서로의 데이터중 교집합에 해당하는 데이터를 얻은걸 INNER JOIN이라 한다.
또한 =(같다) 등호를 사용하여 JOIN을 하였기 때문에 이를 EQUI JOIN( 등가 조인 )이라 한다.
만약 <=, >=, <>, <, > 등 = 가 아닌 모든 등호를 사용하여 데이터를 얻으면 NON-EQUI JOIN( 비등가 조인 )이라 한다.
( 예로 쇼핑몰 같은 데서 마일리지로 등급을 나눌 때 사용된다 EX ) 0~100 은 브론즈 )
이처럼 INNER JOIN은 비교할 값에 널값을 포함하지 않는다
OUTER JOIN은 비교하는 값에 널값이 있어도 포함하여 출력된다.
이름 | 반 |
홍길동 | 1 |
아무개 | 2 |
반 | 선생님 |
1 | 김 |
2 | 이 |
NULL | 박 |
위의 두 테이블을 아우터 조인하면 아래의 테이블이 나온다.
이름 | 반 | 선생님 |
홍길동 | 1 | 김 |
홍길동 | 2 | 이 |
아무개 | 1 | 김 |
아무개 | 2 | 이 |
NULL | NULL | 박 |
이런 식으로 NULL 값을 포함하여 뜨는 것을 OUTER JOIN이라 한다.
위의 예시 테이블을 보면 왼쪽 값이 널이여도 오른쪽의 데이터가 있기에 출력된 모습을 볼 수 있다.
이를 RIGHT OUTER JOIN이라 한다.
(왼쪽에 데이터가 있든 없든 오른쪽에 데이터가 있다면 출력한다.)
만일 왼쪽에 데이터가 있고 오른쪽에 대이터가 없어도 된다면 반대로 LEFT OUTER JOIN이 되는 것이다
(반대로 오른쪽에 데이터가 있든 없든 왼쪽에 데이터가 있다면 출력한다.)
OUTER JOIN을 SQL로 쓸 땐 (+)를 이처럼 붙여서 사용한다.
다만 주의사항은 위의 예시처럼 왼쪽에 (+)가 붙으면 RIGHT OUTER JOIN이고
오른쪽에 (+)가 붙으면 LEFT OUTER JOIN이다.
( + 위치와 반대로 부른다는 것을 조심하자!! )
아래의 그림과 같이 FULL OUTER JOIN이라는 것이 있는데
이는 (+)를 이용해서는 지원을 하지 않는다.
이를 하려면 현재 내가 사용하는 데이터 베이스인 오라클에서는
SQL-99 표준 문법을 사용하면 사용할 수 있다.
'데이터베이스' 카테고리의 다른 글
mongo DB 설치하기 (0) | 2022.11.12 |
---|---|
이클립스 DB 연결 (0) | 2022.10.11 |
제약 조건 (0) | 2022.10.03 |
키(KEY)의 종류 (0) | 2022.10.03 |
DDL, DML, DCL, DQL, TCL (0) | 2022.10.03 |