본문 바로가기

SQL/혼공학습단 8기 - SQL

week3 - 테이블을 연결하는 JOIN 의 종류 와 예제

기본 미션

🐯 Chapter 04 p. 195 - 확인문제 4번 풀고 인증샷

이번에도 확인문제 총 5개중 4번을 풀고 인증샷을 올리는 것이 미션이지만 SQL짱이 되기 위해서 모든 풀이를 인증 하려고 한다. 히히히히...

1. 두 테이블이 일대다의 관계로 연결하기 위한 관계의 전제 조건으로 적절한 것을 고르세요.
① 기본 키 - 기본 키 관계   ② 외래 키 - 외래 키 관계   ③ 기본 키 - 외래 키 관계  ④ 외래 키 - 기본 키 관계
일대 다 관계(ONE TO MANY)한쪽 테이블에는 하나의 값만, 다른 쪽 테이블에는 여러개의 값이 존재할 수 있는 관계를 말한다. 
(예시) 회원 테이블의 회원 정보 중 회원 아이디(PRIMARY KEY, PK)와 상품 구매 테이블의 회원 아이디(FOREIGN KEY, FK)가 일치하는 여러 행들과 조인 할 수 있다.
=> 다른 말로 'PK-FK'관계라고 한다.

 

2. 다음 설명은 어떤 조인에 대한 내용인지 보기에서 각각 고르세요.
①가장 많이 사용되는 조인으로, 일반적으로 부르는 조인이다. 
② 한쪽 테이블에만 데이터가 있어도 결과가 나오는 조인이다.
③ 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시킨다.
④ 한 개의 테이블이 자신과 조인되는 것을 말한다.

ⓐ 자체 조인
ⓑ 상호 조인
ⓒ 내부 조인
ⓓ 외부 조인
  • 내부 조인 INNER JOIN  - 두 테이블을 연결할 때 가장 많이 사용된다 그냥 JOIN으로 표현한다. PK의 값과 동일한 FK의 값을 찾아 두개의 행을 결합 한다. 두 테이블에 모두 정보값이 있을경우 결합하는 방식 (공통분모) 
  • 외부 조인 OUTER JOIN - 한쪽의 테이블에만 데이터가 있어도 결과가 나온다.  
    • A_table <LEFT | RIGHT | FULL> OUTER JOIN B_table 과같이 사용된다.
    • LEFT OUTER JOIN: 왼쪽 테이블을 기준으로 왼쪽 테이블의 내용은 모두 출력되어야 한다. (LEFT JOIN)
    • RIGHT OUTER JOIN: 오른쪽 테이블을 기준으로 오른쪽 테이블의 내용은 모두 출력되어야 한다. (RIGHT JOIN)
      • 왼쪽 오른쪽의 기준은 보이는 그대로의 테이블
    • FULL OUTER JOIN : LEFT JOIN + RIGHT JOIN 이라고 생각하면 된다 양쪽중 어느 한쪽이라도 들어있는 내용이면 출력. 자주 사용하지 않는다.
  • 상호 조인 CROSS JOIN - 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능. 
    • 상호 조인 결과의 전체 행 개수 = 두테이블의 각 행의 개수를 곱한 개수 (카티션 곱 Cartesian product)
    • ON 구문을 사용하지 않는다.
    • 결과의 내용은 의미가 없다, 랜덤으로 조인 하기 때문 
      • 이건 대체 언제쓸까? 주로 테스트 하기 위해 대용량의 데이터를 생성할때....
SELECT * FROM buy
CROSS JOIN member;
  • 자체 조인 SELF JOIN - 자신이 자신과 조인한다는것. 따라서 자체 조인은 1개의 테이블을 사용한다. 
    • 일반적으로 사용하지 않는다
    • 대표적인 사례로 회사의 조직 관계와 같다
    • 같은 테이블에 별칭을 따로 주어 서로 다른 테이블인것 처럼 사용한다.
    • 하나의 테이블에 같은 데이터가 있지만 2개 이상의 열로 존재할 때 자체 조인을 할 수 있다. 
3. 외부 조인의 종류가 아닌것을 1개 고르세요.
① LEFT OUTER JOIN
② RIGHT OUTER JOIN
③ CENTER OUTER JOIN
④ FULL OUTER JOIN

 

4. 다음 SQL은 회원으로 가입만 한, 한번도 구매한 적이 없는 회원의 목록입니다. 빈칸에 들어갈 가장 적합한 것을 고르세요.
SELECT DISTINCT M.mem_id, B.prod_name, M.mem_name, M.addr FROM member M
LEFT OUTER JOIN buy B
ON M.mem_id = B.mem_id
______________________
ORDER BY M.mem_id
WHERE B.prod_name IS NULL

 

5. 다음 빈칸에 들어갈 용어를 보기에서 고르세요.  [내부 조인, 외부 조인, 상호 조인, 자체 조인]

_____①_____ 은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인 시키는 기능을 말합니다. 그래서 상호 조인 결과의 개수는 두 테이블 개수를 곱한 개수가 됩니다. _____②_____ 은 자신이 자신과 조인 된다는 의미 입니다. 그래서 자체 조인은 1개의 테이블을 사용합니다.
상호 조인
자체 조인

 

추가 미션

🐱 p. 183 - [좀 더 알아보기] 손코딩 실행하고 결과화면 인증샷