1. 조인이란?
두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 연산입니다. 퍼즐 조각을 맞추듯이, 공통된 열을 기준으로 테이블을 합쳐서 원하는 정보를 얻을 수 있게 해줍니다.
관계형 데이터베이스인 MySQL에선 JOIN이란 쿼리로, 비관계형 데이터베이스인 MongoDB에선 lookup이라는 쿼리로 이를 처리할 수 있습니다.
2. 조인의 종류
join은 크게 inner join, outer join으로 나뉩니다. outer join에는 left (outer) join, right (outer) join, full (outer) join이 있습니다.
2-1. INNER JOIN
양쪽 테이블에서 모두 일치하는 값이 있는 행만 반환합니다.
<STUDENT>
ID | NAME | DEPT |
1 | 홍길동 | 컴퓨터공학과 |
2 | 이순신 | 산업경영공학과 |
3 | 임꺽정 | 수학교육과 |
<ENROLLMENT>
STUDENT_ID | COURSE_CODE | GRADE |
2 | 101 | A+ |
3 | 102 | B- |
4 | 103 | A0 |
SELECT STUDENT.NAME, ENROLLMENT.COURSE_CODE, ENROLLMENT.GRADE
FROM STUDENT
INNER JOIN ENROLLMENT
ON STUDENT.ID = ENROLLMENT.STUDENT_ID
STUDENT.NAME | ENROLLMENT.COURSE_CODE | ENROLLMENT.GRADE |
이순신 | 101 | A+ |
임꺽정 | 102 | B- |
2-2. LEFT (OUTER) JOIN
왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다.
SELECT S.NAME, E.COURSE_CODE, E.GRADE
FROM STUDENT AS S
LEFT JOIN ENROLLMENT AS E
ON S.ID=E.STUDENT.ID
S.NAME | E.COURSE_CODE | E.GRADE |
홍길동 | NULL | NULL |
이순신 | 101 | A+ |
임꺽정 | 102 | B- |
모든 학생 정보와 수강 신청을 했다면 과목코드, 점수를 보여줍니다. 수강신청을 하지 않은 학생의 경우 과목 코드와 점수는 NULL값으로 표시됩니다.
2-3. RIGHT (OUTER) JOIN
오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환합니다.
SELECT S.NAME, E.COURSE_CODE, E.GRADE
FROM STUDENT AS S
RIGHT JOIN ENROLLMENT AS E
ON S.ID=E.STUDENT.ID
S.NAME | E.COURSE_CODE | E.GRADE |
이순신 | 101 | A+ |
임꺽정 | 102 | B- |
NULL | 103 | A0 |
학생 정보가 없는 수강 신청의 경우 이름은 NULL 값으로 표시됩니다.
2-3. FULL (OUTER) JOIN
양쪽 테이블의 모든 행을 반환하고 일치하는 값이 없으면 NULL값으로 채웁니다.
SELECT S.NAME, E.COURSE_CODE, E.GRADE
FROM STUDENT AS S
FULL JOIN ENROLLMENT AS E
ON S.ID=E.STUDENT.ID
S.NAME | E.COURSE_CODE | E.GRADE |
홍길동 | NULL | NULL |
이순신 | 101 | A+ |
임꺽정 | 102 | B- |
NULL | 103 | A0 |
728x90
'DB' 카테고리의 다른 글
[데이터베이스] 조인의 원리 (0) | 2024.05.29 |
---|---|
[데이터베이스] 종류 (0) | 2024.05.21 |
[데이터베이스] 트랜잭션 Transaction (0) | 2024.05.21 |
[데이터베이스] ERD, 제1 정규형, 제2정규형, 제3 정규형, 보이스/코드 정규형 (0) | 2024.05.17 |
[데이터베이스] 데이터베이스 개념 (0) | 2024.05.15 |