JOIN
Join이란 두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것을 말한다. 데이터베이스의 테이블은 중복과 공간 낭비를 피하고 데이터의 무결성을 위해서 여러 개의 테이블로 분리하여 저장한다. 그리고 이 분리 된 테이블들은 서로 관계를 맺고 있다.
보통 PK 또는 FK로 두 테이블을 연결함
INNER JOIN(내부 조인)
INNER JOIN은 JOIN 중에서 가장 많이 사용되는 JOIN이다.
교집합이라고 많이 설명한다. 여기서 교집합이라는 것은, 특정 조건에 맞는 행들만 포함시키고 그렇지 않은 행들은 제외시킨다는 뜻이다.
--형식
SELECT <열 목록>
FROM <첫 번째 테이블>
INNER JOIN <두 번째 테이블>
ON <조인 될 조건>
WHERE 검색조건
OUTER JOIN(외부 조인)
OUTER JOIN은 조인의 조건에 만족되지 않는 행까지도 포함시키는 JOIN이다.
LEFT JOIN
SELECT <열 목록>
FROM <첫 번째 테이블>
LEFT OUTER JOIN <두번째 테이블>
ON <검색될 조건>
LEFT OUTER JOIN은 INNER JOIN의 결과에 첫 번째 테이블에 있는 모든 값들이 나온다
SELECT * FROM user LEFT OUTER JOIN car ON user.id = car.user_id;
Q. 만약 왼쪽과 오른쪽 테이블을 바꾼다면?
A. 반대로 앞 쪽에 있는 테이블의 결과가 모두 나오게 된다.
* LEFT OUTER JOIN 대신 LEFT JOIN이라고 할 수도 있다.
RIGHT JOIN
SELECT <열 목록>
FROM <첫 번째 테이블>
RIGHT OUTER JOIN <두번째 테이블>
ON <검색될 조건>
RIGHT JOIN은 LEFT JOIN과 유사한데, 두 번째 테이블에 있는 모든 값들이 나온다.
그러니까 두 sql의 결과는 같게 되는 것이다.
SELECT * FROM user LEFT OUTER JOIN car ON user.id = car.user_id;
SELECT * FROM car RIGHT OUTER JOIN user ON user.id = car.user_id;
FULL JOIN(전체 조인 또는 전체 외부 조인)
SELECT <열 목록>
FROM <첫 번째 테이블>
RIGHT OUTER JOIN <두번째 테이블>
ON <검색될 조건>
FULL JOIN은 간단히 LEFT JOIN + RIGHT JOIN이라고 생각하면 된다. 즉, 한쪽을 기준으로 조건과 일치하지 않는 것을 출력하는 것이 아니라, 양쪽 모두에 조건이 일치하지 않는 것을 모두 출력하는 개념이다.
UNION JOIN
UNION JOIN은 두 쿼리의 결과를 행으로 합치는 것을 말한다.
SELECT 문장1
UNION ALL
SELECT 문장2
- SELECT 문장1과 SELECT 문장2의 결과 열의 개수가 같아야 한다.
- 데이터 형식도 각 열 단위로 같거나 서로 호환되는 데이터 형식이어야 한다. 예를 들어 문장 1의 결과는 INT인데 문장1의 결과는 CHAR이라면 오류가 발생할 것이다.
- 열 이름은 문장1의 열 이름에 따른다.
- UNION만 사용하면 중복 된 열은 제거되고 데이터만 정렬되어 나오며, UNION ALL을 사용하면 중복된 열까지 모두 출력된다.
출처 : velog.io/@hj8853/SQL-JOIN%EC%9D%98-%EC%9D%B4%ED%95%B4 & lannstark.tistory.com/m/11
'RDB' 카테고리의 다른 글
SQL - [NOT] IN과 [NOT] EXISTS의 차이 (0) | 2020.10.23 |
---|