클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

여러 테이블을 하나의 테이블처럼 사용하는 조인 1 - 조인과 조인의 종류 본문

알고리즘 및 자료 관리/데이터베이스

여러 테이블을 하나의 테이블처럼 사용하는 조인 1 - 조인과 조인의 종류

huenuri 2024. 8. 21. 17:20

어제 1시 넘어서 취침했지만 그래도 5시에는 일어나야 오늘 해야 할 공부를 할 수 있을 것 같았다. 일어나는데 별로 힘들지는 않았다. 수업 전까지 공부할 수 있는 새벽시간은 3시간 20분 정도인 것 같다.
이 시간을 최대한 활용해서 조인 단원을 마치고 서브쿼리도 조금 학습할 수 있으면 더욱 좋을 것이다.

그럼 바로 이어서 학습을 진행해보자!

 

학습 목표

  1. 시간이 걸리더라도 수업을 잘 듣고 내용도 잘 정리해보자!
  2. 집중해서 효과적으로 공부하자!

학습 시간

새벽 5시 10분 ~ 6시 40분 <1시간 반 소요>


 

 

 

1. 조인

 

 

 

조인의 필요성

 

 

 

 

 

 

 

 

 

중복 데이터를 없애는 정규화 작업을 해줄 수 있지만 또 다른 문제점이 발생학다. 어떤 테이블의 정보인지 알 수 없는 것이다. 이때 수강생 정보 테이블의 식별자를 설정해 성적표 테이블에 빌려줌으로 관계가 형성된다.
이것을 관계형 데이터베이스라고 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이 둘을 합치는 것이 조인이다.


 

 

 

 

조인이란 무엇인가?

일반적인 SQL의 80% 이상이 조인이다.

 

 

 

 

 

 

여러 테이블을 사용할 때의 FROM절

조인은 두 개 이상의 테이블을 연결하여 하나의 테이블처럼 출력할 때 사용하는 방식이다. 집합 연산자와 비슷하지만 둘의 차이점은 다음과 같다. 집합 연산자를 사용한 결과는 두 개 이상 SELECT문의 결과값을 세로로 연결한 것이고, 조인은 두 개 이상의 테이블 데이터를 가로로 연결한 것이라고 할 수 있다.

EMP 테이블과 DEPT 테이블의 정보를 한번에 조회하려면 FROM절에 이 둘 테이블을 함께 명시해주어야 한다.

 

FROM절에 여러 테이블 선언하기

EMP 테이블의 14개 행 하나하나에 DEPT 테이블이 저장된 4개 행이 가라로 조합되어 출력된다. 즉 조인한 결과 행의 개수는 14에 4를 곱한 56개가 된다.


 

 

 

조인 조건이 없을 때의 문제점

이와 같은 조인을 통한 출력은 결과로 나올 수 있는 모든 행을 조합하기 때문에 정확히 맞아 떨어지지 않는 데이터도 함께 출력된다. 이때 열 앞에 티이블 이름을 명시하여 특정 열이 어느 테이블에 속한 열인지 구분할 수 있다.

 

열 이름을 비교하는 조건식으로 조인하기

두 테이블의 DEPTNO 열 값이 같은 14개 행만 출력된다. 각 행별 부서 정보도 정확하게 연결되었음을 확인할 수 있다.

 

 

 

 

테이블의 별칭 설정

지정한 별칭은 테이블의 열을 지칭하는데 사용할 수 있다.

 

테이블 이름을 별칭으로 표현하기

별칭은 출력 결과에 영향을 주지 않는다.


 

 

 

2. 조인 종류

 

 

 

 

비등가 조인

현업에서는 사용하지 않고 자격증 시험에서만 등장한다.

 

 

 

 

 

 

급여 범위를 지정하는 조건식으로 조인하기

조인 조건을 명시하지 않으면 데카르트 곱이 발생하여 각 사원별로 다섯 개 급여 등급이 모두 연결되어 출력된다.


 

 

 

 

등가 조인

 

 

 

 

 

등가조인은 내부 조인 또는 단순 조인으로 부르기도 한다. 일반적으로 가장 많이 사용하는 방식이다. 이름을 특별히 명시하지 않으면 등가 조인을 사용하는 방식이라고 보면 된다.

테이블 1과 2의 정보를 조인하겠다는 의미이다. WHERE절에는 동일 조건을 건다. .은 경로를 뜻하고 조인 조건이 맞이면 컬럼을 가져올 수 있다.

 

 

 

조인을 통해 이 4개의 조건을 출력했다.

 

 

 

 

실습 문제 1번

 

두 값을 같을 값을 가지는 조인 조건으로 연결해주었다. 하지만 너무 복잡해서 오타가 발생할 가능성이 크므로 별칭을 사용하는 경우가 많다.

 

 

 

FROM절이 가장 먼저 사용되기 때문이다.

 

 

 

 

실습 문제 2번

 

 

 

 

여러 테이블의 열 이름이 같을 때 유의점

조인 조건이 되는 각 테이블의 열 이름이 같을 경우 해당 열 이름을 테이블 구분없이 명시할 때 오류가 발생한다. 이럴 때는 어느 테이블에 속해 있는 열인지 반드시 명시해야 한다.

 

 

 

 

WHERE절에 조건식 추가하여 출력 범위 설정하기

WHERE절의 조건식을 사용해 테이블을 조인할 때 반드시 각 테이블을 정확히 연결하는 조건식이 최소한 전체 테이블 수보다 하나 적은 수만큼 있어야 한다.


 

 

 

자체 조인

자체 조인은 하나의 테이블을 여러 개의 테이블처럼 활용하여 조인하는 방식으로 물리적으로 동일한 테이블 여러 개를 사용할 때 발생할 수 있는 문제점을 해결한다.
SELECT문 내부에서 별칭을 각각 달리 주어 논리적으로 다른 테이블인 것처럼 명시하여 두 테이블을 조인하는 방식이다.

 

같은 테이블을 두번 사용하여 자체 조인하기

결과에 MGR이 NULL인 조건은 제외되었음을 기억하자!

 

 

 

외부 조인

두 테이블 간 조인 수행에서 조인 기준 열의 어느 한쪽이 NULL이어도 강제로 출력하는 방식을 외부 조인이라고 한다. 외부 조인은 조자우를 따로 나누어 지정하는데 WHERE절에 조인 기준 열 중 한쪽에 + 기호를 붙여준다.

 

왼쪽 외부 조인 사용하기

 

 

 

오른쪽 외부 조인 사용하기

왼쪽 외부 조인은 왼쪽 열을 기준으로 오른쪽 열의 데이터 존재 여부에 상관없이 출력하라는 뜻이다. 반대로 오른쪽 외부 조인을 사용한 경우 아래쪽 데이터는 왼쪽 테이블 데이터가 모두 NULL임을 확인할 수 있다.

처음에는 이 개념이 조금 어렵다고 한다. 사실 잘 이해가 되지 않지만 지금은 이런 것이 있다 정도로 알아두려고 한다.

 


 

 

 

학습을 마치고

여기까지 해서 조인에 대한 개념 학습은 마쳤다. 어제 새벽과 달리 조금 천천히 학습해보았고 수업 내용도 건너뛰지 않고 열심히 들었다. 이제 어떻게 사용하는지 예제를 통해 살펴보며 문제를 풀어보는 시간을 갖고자 한다.

이제 조인의 마지막 학습인 표준 문법 조인만이 남아있다. 이 단원은 다른 단원에 비해 조금 짧은 편이다. 금방 학습하고 연습문제까지 이어서 풀 수 있을 것 같다.