본문 바로가기
DB/DBMS

DBMS - JOIN

by 코딩하는 랄로 2023. 8. 17.
728x90

JOIN

JOIN은 DBMS에서 많이 쓰이는 문법 중 하나로, 이름 그대로 여러 테이블을 하나로 합치는 문법이다. 여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와서 가상의 테이블처럼 만들고 결과를 보여준다.

 

조회 테이블이 너무 많이 쪼개져 있으면 각각의 테이블에 같은 작업을 반복해야 되기 때문에 작업 속도가 느려지는 데 이 대 조인을 이용하여 필요한 테이블을 합쳐서 작업을 하나다면 훨씬 효율적으로 작업을 수행할 수 있다.

 

 

INNER JOIN - 내부 조인

조건이 일치하는 값이 두 테이블에 모두 존재할 때 내부 조인을 사용하여 조회를 할 수 있다. 조건이 일치하는 값이 존재하기 위해서는 두 테이블이 PK, FK로 연결되어야 함을 의미한다.

SELECT ... FROM 테이블1 JOIN 테이블2 ON 조건식;

INNER는 생략 가능하기 때문에 일반적으로 JOIN만 사용한다. ON절을 통해 조건식을 추가할 수 있다. WHERE절 조건식도 사용할 수 있지만 ON절이 조인이 되면서 실행되고 WHERE절은 조인이 모두 끝나고 실행됨을 주의하여 작성하여야 한다.

 

그렇기 때문에 WHERE절을 같이 사용하였을 때와 ON절만 사용하였을 때의 결과가 똑같다면 ON절만 사용하는 것이 훨씬 효율적으로 동작한다.

 

추가적으로 조인 문법은 여러 테이블을 합쳐서 사용하기 때문에 SELECT절에서 어떤 테이블에 속한 칼럼인지 알려주기 위해 TABLE.COLUMN의 형태로 작성을 하여야 한다.

 

이 때 테이블명에 다음과 같이 ALIAS를 붙여주면 훨씬 가독성이 좋고 편리한 코드를 작성할 수 있다. 

SELECT C.id P.id 
FROM CUSTOMER C JOIN PRODUCT P 
ON C.id = P.customer_id;

 

 

INNER JOIN의 종류

INNER JOIN은 다음과 같이 두가지로 나누어 구분한다.

  • 등가 조인 : ON절에 등호가 있을 때
  • 비등가 조인 : ON절에 등호가 없을 때

 

 

NATURAL JOIN - 네츄럴 조인

NATURAL JOIN은 INNER JOIN과 유사하면서도 다르다. 내부 조인의 경우 두 테이블이 갖는 공통 컬럼에 대해서 별개의 컬럼으로 나타내지만 네츄럴 조인은 하나의 컬럼으로 나타낸다. 

 

이 때에 공통 컬럼의 의미는, 단순히 이름만 같은 것이 아니라 타입까지 모두 같아야 함을 의미한다.

 

그렇기 때문에 사용 방법으로는 내부 조인에서 사용하는 방법과 네츄럴 조인문을 이용하여 사용하는 방법으로 나뉜다.

 

USING절

SELECT * FROM CUSTOMER JOIN PRODUCT USING (c_id);

 

NATURAL JOIN

SELECT * FROM CUSTOMER NATURAL JOIN PRODUCT;

 

 

OUTER JOIN - 외부 조인

위에서 살펴본 조인의 경우 조건에 만족하지 않을 경우 출력되지 않는 데이터들이 존재한다. 하지만 특정 칼럼이 조건을 만족하지 않더라도 해당 데이터에 대한 정보 또한 출력하고 싶은 경우가 존재한다.

 

이 때에 사용하는 것이 OUTER JOIN, 외부 조인이다. 조인하는 두 개의 테이블 중 조건이 거짓이라도 지정한 테이블의 모든 정보를 검색해서 보여주는 문법이다.

 

그렇기 때문에 외부조인에서는 기준이 되는 테이블을 지정해주어야 하는데, 오른쪽 테이블이 기준이면 RIGHT OUTER JOIN, 왼쪽 테이블이 기준이면 LEFT OUTER JOIN을 사용한다.

 

만약, 두 테이블 모두 조건이 일치하지 않는 것까지 출력하기를 원한다면 FULL OUTER JOIN을 사용하면 된다.

 

 

 

JOIN의 종류는 이 글에서 다루었던 INNER JOIN, NATURAL JOIN, OUTER JOIN이 외에도 셀프 조인, ANSI 조인(ANSI sql과 호환하여 사용하는 조인) 등이 있다.(추후에...)

 

 

 

2023.08.17 - [Programming 공부/DBMS] - DBMS - DCL

 

DBMS - DCL

DCL이란 DCL = DATA CONTROL LANGUAGE = 데이터 제어어 DCL은 데이터 제어어로서 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어이다. 예를 들어 신입사원이 들어와 데이터베이스

codingralro.tistory.com

 

728x90

'DB > DBMS' 카테고리의 다른 글

DBMS - VIEW  (0) 2023.08.17
DBMS - DCL  (0) 2023.08.17
DBMS - Optimizer, Hint  (0) 2023.08.15
DBMS - GRUOP BY, SUB QUERY  (0) 2023.08.15
DBMS - 집계함수, ORDERBY,CASE  (0) 2023.08.14