[데이터베이스] Join 이란 ?CS/데이터베이스2022. 7. 21. 16:56
Table of Contents
728x90
Join (조인)이란 ?
조인이란 두개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법이다.
두 개 이상의 테이블을 조인하기 위해서는 외래키가 적어도 하나 이상 있어야 한다.
Join의 종류
- 내부 조인 (INNER JOIN)
- 자연 조인 (NATURAL JOIN)
- 외부 조인 (OUTER JOIN)
- 왼쪽 외부 조인 (LEFT OUTER JOIN)
- 오른쪽 외부 조인 (RIGHT OUTER JOIN)
- 전체 외부 조인 (FULL OUTER JOIN)
- 크로스 조인 (CROSS JOIN)
- 셀프 조인 (SELF JOIN)
내부 조인 (Inner Join)
사용 방법
1)
SELECT 조회할 컬럼
FROM 테이블1, 테이블2
[WHERE 조건문]
2)
SELECT 조회할 컬럼
FROM 테이블1
(INNER) JOIN 테이블2
ON 테이블1.컬럼 = 테이블2.컬럼
[WHERE 추가 조건]
조건
- 기준 테이블과 조인 테이블에 모두 조인 컬럼 데이터가 존재해야 한다.
예시
Left Table = Sales
Right Table = Country
SELECT Sales.*, Countries.Country
FROM Sales
JOIN Countries
ON Sales.CountryID = Countries.ID
자연 조인 (Natural Join)
사용 방법
SELECT 조회할 칼럼
FROM 테이블1
NATURAL JOIN 테이블2
[WHERE 조건문]
- 내부 조인에 속한다.
- 두 테이블에서 동일한 컬럼명을 갖는 컬럼은 모두 조인된다.
- 두 테이블이 동시에 가지고 있는 컬럼의 값이 전부 같은 것만 골라낸다.
- 반드시 두 테이블 간의 동일한 이름, 타입을 가진 컬럼이 필요하다. 이름이 같지만 타입이 다른 칼럼이 있으면 에러
- INNER Join에서 조건문을 추가하여 같은 결과값을 얻을 수 있다.
예시
SELECT *
FROM R
NATURAL JOIN S
왼쪽 외부 조인 (Left Join, Left Outer Join)
사용 방법
SELECT 조회할 컬럼
FROM 기준테이블1
LEFT OUTER JOIN 테이블2
ON 조건문
[WHERE 추가조건문]
- 일반적으로 LEFT Join을 LEFT OUTER Join이라고 부른다.
- 왼쪽 테이블을 기준으로 일치하는 행만 결합하고 일치하지 않는 부분은 null값으로 채워진다.
예시
SELECT *
FROM instructor
LEFT OUTER JOIN teaches
ON instructor.id = teaches.id
MINUS
사용 방법
SELECT 칼럼명 FROM 테이블1
MINUS
SELECT 칼럼명 FROM 테이블2;
- MINUS 연산은 두개의 테이블에서 차집합을 조회한다.
- 먼저 쓴 SELECT 문에는 있고 뒤에 쓴 SELECT 문에는 없는 집합을 조회한다.
- LEFT OUTER Join에서 오른쪽 테이블에 값이 null로 채워진 튜플과만 Join 하는 것이다.
오른쪽 외부 조인 (Right Join, Right Outer Join)
사용 방법
SELECT 조회할 컬럼
FROM 테이블1
RIGHT OUTER JOIN 기준테이블2
ON 조건문
[WHERE 추가조건문]
- RIGHT Join을 RIGHT OUTER Join이라고 한다.
- 오른쪽 테이블을 기준으로 일치하는 행만 결합되고 일치하지 않는 부분은 null값으로 채워진다.
예시
SELECT *
FROM instructor
RIGHT OUTER JOIN teaches
ON instructor.id = teaches.id
전체 외부 조인 (Full Outer Join)
SELECT 조회할 컬럼
FROM 테이블1
FULL OUTER JOIN 테이블2
ON 조건문
[WHERE 추가조건문]
- 공통된 부분만 골라 결합하는 INNER Join과 다르게 공통되지 않은 행도 유지한다.
- 이때 두 테이블 모두의 값을 유지하면 Full Outer Join
- 왼쪽 테이블 값만 유지하면 Left Outer Join
- 오른쪽 테이블 값만 유지하면 Right Outer Join
- MySQL에서는 Full Outer Join을 지원하지 않으므로 LEFT Outer Join 결과와 RIght Outer Join 결과를 UNION하여 사용해야 함
예시
SELECT *
FROM instructor
FULL OUTER JOIN teaches
ON instructor.id = teaches.id
크로스 조인 (CROSS Join)
사용 방법
1)
SELECT 조회할컬럼
FROM 테이블1, 테이블2
2)
SELECT 조회할컬럼
FROM 테이블1
JOIN 테이블2
3)
SELECT 조회할컬럼
FROM 테이블1
CROSS JOIN 테이블2
- 곱집합이라고 부른다.
- 두 테이블 데이터의 모든 조합을 나타낸다.
- 테이블1의 튜플수 * 테이블2의 튜플수 만큼의 튜플을 가진 테이블이 생성된다.
셀프 조인 (Self Join)
- 자기 자신과의 CROSS JOIN
- 하나의 테이블을 여러번 복사해서 조인한다고 생각하면 된다.
- 자신이 갖고 있는 칼럼을 다양하게 변형시켜 활용할 때 자주 사용한다.
mysql> SELECT * FROM t1 AS a CROSS JOIN t1 AS b;
+------+------+------+------+
| i1 | c1 | i1 | c1 |
+------+------+------+------+
| 1 | a | 1 | a |
| 2 | b | 1 | a |
| 3 | c | 1 | a |
| 1 | a | 2 | b |
| 2 | b | 2 | b |
| 3 | c | 2 | b |
| 1 | a | 3 | c |
| 2 | b | 3 | c |
| 3 | c | 3 | c |
+------+------+------+------+
SELECT
A.NAME, B.AGE
FROM EX_TABLE A, EX_TABLE B
참고
728x90
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] Anomaly (이상 현상) (0) | 2022.07.22 |
---|---|
[데이터베이스] EQUI JOIN vs Non-EQUI JOIN (등가 vs 비등가 조인) (0) | 2022.07.22 |
[데이터베이스] Full Outer Join vs UNION, Inner Join vs INTERSECT (0) | 2022.07.22 |
[데이터베이스] SQL vs NoSQL 개념, 장단점, 비교 (0) | 2022.07.21 |
[데이터베이스] 키(Key) 개념 및 종류 (0) | 2022.07.21 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!