정답은 1번입니다.
이 문제는 두 테이블을 결합할 때 어느 한 쪽에만 데이터가 있더라도 누락시키지 않고 모두 결과에 포함하는 FULL OUTER JOIN의 동작 방식을 묻고 있습니다. 이는 LEFT JOIN과 RIGHT JOIN의 결과를 합친 합집합(Union)의 개념으로 이해하면 쉽습니다.
1. ORDER_ID | NAME (108 | NULL, 107 | 김서준, NULL | 최서연)
: ORDER_ID 107은 CUSTOMER_ID 5와 매칭되어 '김서준'과 결합됩니다. ORDER_ID 108은 매칭되는 고객 정보(6)가 CUSTOMERS 테이블에 없으므로 NAME이 NULL로 출력됩니다. 반대로 고객 '최서연'(7)은 주문 내역이 없으므로 ORDER_ID가 NULL로 출력됩니다. 양쪽의 모든 데이터를 유지한 이 결과가 FULL OUTER JOIN의 올바른 실행 결과입니다.
2. ORDER_ID | NAME (108 | NULL, 107 | 김서준)
: 이 결과는 ORDERS 테이블을 기준으로 한 LEFT OUTER JOIN의 결과입니다. 주문 정보는 모두 유지되었으나, 주문을 하지 않은 고객 '최서연'의 정보가 누락되어 있습니다.
3. ORDER_ID | NAME (107 | 김서준)
: 이 결과는 양쪽 테이블에 공통으로 존재하는 CUSTOMER_ID 5에 대해서만 결합된 INNER JOIN의 결과입니다. 매칭되지 않은 108번 주문과 '최서연' 고객이 모두 제외되었습니다.
4. ORDER_ID | NAME (108 | 김서준, 107 | 김서준, NULL | 최서연)
: ORDER_ID 108의 CUSTOMER_ID는 6이므로 5인 '김서준'과 결합될 수 없습니다. 조인 조건을 무시하고 데이터를 임의로 매칭한 잘못된 결과입니다.
FULL OUTER JOIN은 조인 조건에 성공한 데이터(107-김서준)뿐만 아니라, 왼쪽 테이블에만 있는 데이터(108-NULL)와 오른쪽 테이블에만 있는 데이터(NULL-최서연)를 모두 결과 집합에 포함합니다. 데이터 유실 없이 모든 정보를 확인하고자 할 때 사용하는 방식입니다.
따라서, 정답은 '1. ORDER_ID | NAME (108 | NULL, 107 | 김서준, NULL | 최서연)' 입니다.