조인 (Join)
조인이란 두개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것을 말한다.
데이터베이스의 테이블은 중복과 공간 낭비를 피하고 데이터 무결성을 위해 여러 개의 테이블로 분리하여 저장한다. 그리고 테이블 끼리는 서로 관계를 맺고 있다. 1대1 또는 1대다 관계이다.
이러한 관계에서 공통된 테이블로 합쳐 값들을 출력하려고 할때 쓰이는것이 조인이다.
그중 가장 많이 사용하는것이 내부조인이다.
내부 조인 (INNER Join)
형식
selct <열 목록>
from <첫 번째 테이블>
INNER JOIN <두 번쨰 테이블>
ON <조인될 조건>
[WHERE 검색조건]
여기서 INEER JOIN을 JOIN으로 써도 내부조인으로 인식한다.
사용자 테이블이 존재한다고 봤을때 사용자 테이블의 ID는 기본키로 지정이되어있어 한사람이 여러개의 물품을 구매할때 동일한 ID로 데이터를 등록할 수 없다. 그래서 구매 테이블로 따로 분리를 시켜놓고, 정보를 조회할때 내부 조인을 하여 테이블을 합친 결과를 볼 수 있다.
코드를 보자 사용자 테이블은 usertbl, 구매테이블은 buytbl 이다.
SELECT * FROM buytbl b
JOIN usertbl u
ON b.userID = u.userID ;
사용자 테이블과 구매테이블에는 공통속성인 userID가 존재하므로 조인 조건으로 설정하였다.
가운데 userID를 기준으로 왼쪽은 구매테이블 오른쪽은 사용자테이블이다. 2개의 테이블이 합친 결과로 나왔다.
이렇게 조인을 활용하면 한사람이 어떤 물품을 구매했고 그 사람의 정보도 동시에 확인할 수 있다. 이러한 용도로 많이 쓰인다. 또한 조인에 조건도 걸 수 있어 특정 사람이 어떤 물품을 구매했고 그 정보도 확인이 가능하다.
SELECT b.userID '사용자 ID', u.name '이름', u.addr '주소',b.prodName '구매물품' , b.amount '수량'
FROM buytbl b JOIN usertbl u
ON b.userID = u.userID
WHERE b.userID ='kbs';
이렇게하면 'KBS' 의 ID를 가진 사용자가 어떤물품을 구매했고 이름과 주소 까지 동시에 확인이 가능하다.
외부 조인 (OUTER Join)
외부 조인은 조인의 조건에 만족되지 않는 행까지도 포함시키는 것이다. 자주 사용되진 않는다
형식
SELECT <열목록>
FROM <첫 번쨰 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN < 두 번쨰 테이블(RIGHT 테이블)>
ON <조인될 조건>
[WHERE 검색조건];
외부 조인도 예시를 통해 알아보자
SELECT *
FROM usertbl u
LEFT OUTER JOIN buytbl b
ON u.userID =b.userID ;
이렇게 하면 구매 기록이 없는 회원도 출력이 된다.
LEFT OUTER JOIN문의 의미는 '왼쪽 테이블(usertbl)의 것은 모두 출력되어야 한다' 로 해석하면된다.
동일한 결과를 나오게 하려면 단순하게 RIGHT OUTER JOIN 으로하고 왼쪽과 오른쪽 테이블의 위치 즉, FROM 에 buytbl, OUTER JOIN 뒤에 usertbl 로 하면된다.
또한, LEFT OUTER JOIN을 줄여서 LEFT JOIN 으로 써도 동일한 의미이다.
결과
FULL OUTER JOIN은 LEFT OUTER JOIN 과 RIGHT OUTER JOIN을 합친것이라 생각하면 된다. 줄여서 FULL JOIN 이다. 한쪽을 기준으로 조건과 일치하지 않는 것을 출력하는 것이 아니라, 양쪽 모두에 조건이 일치 하지 않는 것을 모두 출력하는 개념이다.
'MariaDB' 카테고리의 다른 글
데이터베이스 제약조건(기본키,외래키,CHECK,DEFAULT) (1) | 2023.10.13 |
---|---|
데이터베이스 UNION/ UNION ALL/ NOT IN / IN (1) | 2023.10.12 |
MariaDB 내장 함수 (수학 함수, 날짜 및 시간 함수, 시스템 정보 함수) (1) | 2023.10.11 |
MariaDB 내장 함수 (제어 흐름 함수, 문자열 함수) (1) | 2023.10.11 |