[Database] JOIN

h220101·2022년 5월 1일
0

JOIN

두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는것.
사용자가 필요한 집합 결과를 도출 해준다.


1. INNER JOIN


교집합 (특정 컬럼 기준)
두 테이블의 값 중 모두 포함된 값만 표시한다.

SELECT
   *
FROM
   tb_member_level AS l
   INNER JOIN
   tb_member AS m
   ON
   l.level_num = m.m_level;

ON : 선택한 테이블 내에서 조건을 걸어 검색하는 것 이다.
논리연산자 AND로 조건을 추가할 수있다.
AND조건과 WHERE의 차이를 알아야 한다.


2. OUTER JOIN

(LEFT JOIN , RIGHT JOIN)


한쪽 집합 모두 출력 (특정 컬럼 기준)

SELECT
   *
FROM
   tb_member_level AS l
   LEFT JOIN
   tb_member AS m
   ON
   l.level_num = m.m_level;

LEFT JOIN (RIGHT JOIN) 차집합

NULL값을 조회 하고 싶은 경우 IS NULL 을 사용한다.
반대로 NULL값이 아닌 값을 조회 하고 싶은 경우 IS NOT NULL을 사용한다.
IS NOT NULL을 입력한 경우 INNER JOIN과 같은 결과를 얻을 수 있다.

SELECT 
*
FROM TABLE A
  LEFT JOIN TABLEB
  ON A.KEY = B.KEY
WHERE B.KEY IS NULL;
SELECT
	*
FROM
	tb_member_level AS l
	LEFT JOIN
	tb_member AS m
	on
	l.level_num = m.m_level
	WHERE
	m_id IS not null;

3. SELF JOIN


동일 집합끼리 특정 컬럼 기준으로 집합 출력
(잘 사용안하지만 계층구도를 만들 때 사용한다.)

SELECT
   m1.m_id AS member1
  ,m2.m_id AS member2
  ,m1.m_addr AS address
FROM
  tb_member AS m1
  JOIN
  tb_member AS m2
  ON
  m1.m_id <> m2.m_id
  AND
  m1.m_addr = m2.m_addr
ORDER BY m1.m_id;

4. CROSS JOIN


두 집합의 곱집합 출력

SELECT
   *
FROM
  tb_member_level AS l
  CROSS JOIN
  tb_member AS m
ORDER BY l.level_num, m.m_id;


5. NATURAL JOIN


특정 집합의 같은 이름을 가진 컬럼 간의 조인집합을 출력
(같은 컬럼이여야 한다. 이너조인과 같이 표현된다.)

SELECT
*
FROM
tb_member_level
NATURAL JOIN
tb_member_backup;



SELECT
*
FROM
tb_member_level AS l
INNER JOIN
tb_member_backup AS mb
ON
l.level_num = mb.level_num;
profile
기록하는 삶

0개의 댓글