일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데이터베이스
- JSP/Servlet
- 정보처리기사필기
- 텍스트마이닝
- numpy/pandas
- html/css
- SQL
- 자바
- 딥러닝
- 중학1-1
- 정수와유리수
- C++
- 혼공머신
- 중학수학
- 데이터분석
- pandas
- 파이썬
- 자바 실습
- 데이터입출력구현
- 코딩테스트
- 파이썬라이브러리
- 머신러닝
- 운영체제
- 연습문제
- 컴퓨터구조
- CSS
- CNN
- 영어공부
- 컴퓨터비전
- 정보처리기사실기
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
SQL 고급 문법 4 - 두 테이블을 묶는 조인 2 : 외부 조인 및 기타 조인 본문
이제 외부조인과 나머지 부분을 이어서 학습해 보겠다.
외부 조인
외부 조인은 한쪽에만 데이터가 있어도 결과가 나온다.
외부 조인의 기본
외부 조인은 두 테이블을 조회할 때 필요한 내용이 한쪽 테이블에 있어도 결과를 추출할 수 있다. 외부 조인의 형식은 다음과 같다.
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON <조인될 조건>
[WHERE 검색 조건];
내부 조인보다는 조금 복잡해 보이지만 사용 방법은 거의 비슷하다. 먼저 전체 회원 구매 기록을 출력해 보겠다.
RIGHT OUTER JOIN으로 동일한 결과를 출력하려면 왼쪽과 오른쪽 테이블의 위치만 바꾸면 된다.
외부 조인의 활용
내부 조인과는 반대로 회원으로 가입만 하고, 한 번도 구매한 적이 없는 회원의 목록을 추출해 보겠다.
FULL OUTER JOIN은 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것이다. 왼쪽이든 오른쪽이든 한쪽에 들어 있는 내용이라면 출력한다. 자주 사용하지는 않는다.
기타 조인
내부 조인이나 외부 조인처럼 자주 사용하지는 않지만 가끔 유용하게 사용되는 상호 조인과 자체 조인도 있다.
상호 조인
한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능을 말한다. 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 개수가 된다.
다음 그림을 보면 회원 테이블의 첫 행이 구매 테이블의 12개의 행과 결합된다. 그다음도 마찬가지로 결합되어 회원 테이블의 모든 행이 구매 테이블의 모든 행과 결합된다. 최종적으로 회원 테이블의 10개 행과 구매 테이블의 12개 행을 곱해 총 120개의 결과가 생성된다.
회원 테이블과 구매 테이블의 상호 조인은 다음과 같다.
데이터가 너무 많아서 전부 출력할 수는 없었다. 이렇게 각 행의 10개씩 조인이 되는 것을 볼 수 있다. 상호 조인은 다음과 같은 특징을 갖는다.
- ON 구문을 사용할 수 없다.
- 결과의 내용은 의미가 없다. 랜덤으로 조회하기 때문이다.
- 상호 조인의 주 용도는 테스트하기 위해 대용량의 데이터를 생성할 때이다.
두 개의 샘플 테이터를 상호 조인하면 다음과 같은 개수가 나온다.
대용량의 테이블을 만들고 싶을 때는 CREATE TABLE ~ SELECT 문을 사용한다. 하지만 실습 시간이 너무 오래 걸리므로 작은 테이블을 생성하고 5건 만을 조회해 보겠다.
오른쪽으로 데이터가 계속 있지만 중간에 잘랐다.
자체 조인
자체 조인은 자신이 자신과 조인한다는 의미이다. 따라서 자체 조인은 1개의 테이블을 사용한다.
실무에서 자체 조인을 많이 사용하지는 않지만, 대표적인 사례로 회사의 조직 관계를 살펴볼 수 있다. 다음은 일반적인 회사의 조직 관계를 간단히 표현한 것이다.
이를 테이블로 표현해 보겠다. 예를 들어, 관리 이사는 직원이므로 직원 열에 속해야 한다. 그러면서 동시에 경리부장과 인사부장의 상관이어서 직속상관 열에도 속한다.
만약 직원 중 경리부장의 직속상관인 관리이사의 사래 연락처를 알고 싶다면 EMP 열과 MANAGER 열을 조회해야 한다.
자체 조인 형식은 다음과 같다. 테이블이 1개이지만 다른 별칭을 사용해서 서로 다른 것처럼 사용하면 된다.
SELECT <열 목록>
FROM <테이블> 별칭 A
INNOR JOIN <테이블> 별칭 B
ON <조인될 조건>
[WHERE 검색 조건]
자체 조인을 활용해 경리 부장의 연락처를 출력해 보겠다.
이처럼 자체 조인은 2개의 테이블이 조인되는 것처럼 구성한 것이다. 하나의 테이블에 같은 데이터가 있지만 2개 이상의 열로 존재할 때 자체 조인을 할 수 있다.
단원 마무리하기
문제도 모두 잘 맞혔다.
학습을 마치고
새벽에 공부하려던 목표를 모두 마칠 수 있어서 감사했다. 오늘은 인사교에 가서 내 노트북에 MySQL이 잘 작동되는지 확인해 보고 잘 안되면 삭제하고 재설치를 진행해 볼 예정이다. Spring 수업 시간에 설치한 건데 DB 용으로 사용하려는 건 아니라서 버전 등이 안 맞을 수도 있다.
스프링 수업도 거의 듣지 않았지만 11월에는 스프링도 공부해 볼 생각이다. 이제 운동도 가고 다른 준비를 해야겠다.
'알고리즘 및 자료 관리 > SQL' 카테고리의 다른 글
SQL 고급 문법 6 - SQL 프로그래밍 2 : WHILE 문과 동적 SQL (0) | 2024.10.21 |
---|---|
SQL 고급 문법 5 - SQL 프로그래밍 1 : IF 문과 CASE 문 (1) | 2024.10.21 |
SQL 고급 문법 3 - 두 테이블을 묶는 조인 1 : 내부 조인에 대하여 (0) | 2024.10.21 |
SQL 고급 문법 2 - MySQL의 데이터 형식 2 : 데이터 형식 및 데이터 형 변환 (0) | 2024.10.20 |
SQL 기본 문법 7 - 데이터 변경을 위한 SQL 문 2 : 스스로 실습해보기 (0) | 2024.10.20 |