본문 바로가기

스파르타 부트캠프(spring)

[내일배움캠프] 자바 Spring_SQL(4)JOIN_230112

4일차: JOIN

 

JOIN이란?

: 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것.

 

기본 형태

     SELECT (테이블.컬럼, 테이블.컬럼)

     FROM 테이블1, 테이블2
   

     WHERE
(조건)

 

 

 

내부 조인(Inner join)

: 기준 테이블과 조인 테이블 모두에 조인컬럼 데이터가 존재해야 조회 됨.

내부 조인의 형식

   SELECT 조회할 컬럼 

   FROM 테이블1

   (INNER) JOIN 테이블2 --INNER JOIN은 'INNER' 생략 가능

   ON 테이블1.컬럼 = 테이블2.컬럼--JOIN될 조건


   WHERE  추가 조건;

 

SQL

  SELECT buy.mem_id, member.mem_name, buy.prod_name, member.addr

  FROM buy

  JOIN member

  ON buy.mem_id = member.mem_id;


-------- 테이블 이름에 별칭을 붙이면
  SELECT B.mem_id, M.mem_name, B.prod_name, M.addr

  FROM buy B

  JOIN member M

  ON B.mem_id = M.mem_id;

 

외부 조인(Outer join)

: 두 테이블을 조인할 때 필요한 내용이 한쪽 테이블에만 있어도 결과를 추출할 수 있다.

 

외부 조인의 형식

     SELECT  조회할 컬럼

     FROM 테이블1(LEFT테이블)

     <LEFT / RIGHT / FULL> OUTER JOIN 테이블2 (RIGHT테이블)

     ON 조건문


     [WHERE 검색 조건];
  • 두 테이블 전부 값을 유지 -> FULL OUTER JOIN
  • 왼쪽 테이블 값만 유지 -> LEFT OUTER JOIN
  • 오른쪽 테이블 값만 유지 -> RIGHT OUTER JOIN

 

SQL

  SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
 
  FROM member M
 
  LEFT OUTER JOIN buy B
 
  ON M.mem_id = B.mem_id
 
  ORDER BY M.mem_id;

 

 

그 밖의 조인

상호 조인(cross join)

: 두 테이블의 데이터의 모든 조합 (곱집합, 테이블1 row * 테이블2 row의 개수 만큼 row를 가진 테이블 생성)

상호 조인의 형식

     SELECT 조회할 컬럼

     FROM 테이블1 

     CROSS JOIN 테이블2 

 

 

자체 조인(self join)

: 1개의 테이블에 가상으로 1 , 2 라는 별칭을 부여하여 2개의 테이블처럼 간주한 뒤 조인하는 것.

기본 형태

     SELECT 조회할 컬럼 
     
     FROM 테이블.별칭A

     INNER JOIN 테이블 별칭B
     ON 조인될 조건

    [ WHERE (검색
조건)]
  • SELF JOIN도 INNER JOIN, OUTER JOIN으로 문제 유형에 따라 다르게 수행 가능.