개발 블로그
[데이터베이스]JOIN 본문
JOIN이란?
두 개 이상의 테이블의 정보를 결합해 원하는 데이터를 만들 수 있도록 돕는 메커니즘이다.
JOIN을 사용하는 이유는 두 개 이상의 테이블을 결합해 유의미한 정보로 만들어내는 것이 목표이다.
예시로 게시글 테이블만으로는 게시글 작성자의 정보는 알 수 없다. 게시글 테이블과 작성자 테이블을 결합하면 더 쉽게 게시글의 정보와 회원 정보를 확인할 수 있다.
두 개의 테이블이 있다. 만약 게시글과 게시글을 작성한 회원 정보를 알고 싶다면
SELECT BO_ID, BO_TITLE, BO_CONTENT, BO_M_ID, M_ID, M_MEMBER_ID, M_NAME
FROM BOARD INNER JOIN MEMBER
ON BO_M_ID = M_ID;
JOIN의 유형
두 개 이상의 테이블을 조인하는 여러가지 방법이 있는데, 어느 테이블을 기준으로 할 것인지에 따라 달라진다.
두 개의 테이블에서, A 테이블의 A_B_ID는 B_ID를 참조하고 있다.
1. INNER JOIN
A와 B 테이블을 결합할 때 A_B_ID와 B_ID를 기준으로 행을 가져오는데 이때 교집합 부분만 가져오는 것을 INNER JOIN이라고 한다. A_B_ID가 NULL이 아닌 행들을 가져오고, A_B_ID와 동일한 B_ID 행을 가져온다.
SELECT * FROM A INNER JOIN B ON A_B_ID = B_ID;
2. LEFT OUTER JOIN
A와 B 테이블을 결합할 때 A의 행은 다 가져오고 A_B_ID와 B_ID를 기준으로 교집합 부분만 가져오는 것을 LEFT OUTER JOIN이라고 한다. A의 모든 행들을 가져오고 A_B_ID와 B_ID가 동일한 B의 행을 가져온다. (빈 공간은 NULL로 채운다)
SELECT * FROM A LEFT OUTER JOIN B ON A_B_ID = B_ID;
3. RIGHT OUTER JOIN
위와 동일하지만 이번엔 기준이 B 테이블이다.
SELECT * FROM A RIGHT OUTER JOIN B ON A_B_ID = B_ID;
*LEFT OUTER JOIN과 RIGHT OUTER JOIN의 결과는 A와 B의 위치를 서로 바꾸면 동일하다.
4. FULL OUTER JOIN
A, B 두 테이블을 결합할 때 A와 B에 해당하는 모든 행을 가져오고, A_B_ID와 B_ID가 동일한 행을 결합한다.
SELECT * FROM A FULL OUTER JOIN B ON A_B_ID = B_ID;
5. A-B (또는 B-A)
A 차집합 B이며, A 테이블 기준 B와 결합되지 않은 모든 행들을 가져온다. 즉 A 테이블 기준 B 테이블을 참조하지 않은 행들이다.
SELECT * FROM A LEFT OUTER JOIN B ON A_B_ID = B_ID;
WHERE B_ID IS NULL;
INNER JOIN과 LEFT OUTER JOIN만 정확히 알아도 문제 없다!
별칭과 조인
' . ' : 칼럼 앞에 . 연산자와 테이블 이름을 명시하면, 두 테이블에서 칼럼의 이름이 동일해도 구분할 수 있다.
SELECT STUDENT.NAME AS STUDENT, TEACHER.NAME AS TEACHER
FROM STUDENT INNER JOIN TEACHER
ON TEACHER.TEACHER_ID = STUDENT.TEACHER_ID;
이것은 STUDENT 테이블과 TEACHER 테이블에 있는 동일한 이름의 NAME 칼럼을 AS로 다른 이름으로 지정하고, TEACHER_ID가 동일한 행들을 가져왔다.
'전공 공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 관계 대수(relational algebra)란? (0) | 2022.12.13 |
---|---|
[데이터베이스]서브쿼리란?/ 서브쿼리 사용법 (0) | 2022.12.11 |
[데이터베이스]집계함수란?/데이터 그룹화 (0) | 2022.12.09 |
[데이터베이스]WHERE 조건절/LIKE (0) | 2022.12.08 |
[데이터베이스]SELECT 구문으로 데이터 검색하기 (0) | 2022.12.08 |