두개의 테이블을 묶는 것
대부분 이것을 의미함
ex. 회원과 구매 테이블
한명의 회원은 여러번 구매할 수 있다-> 회원 테이블의 PK인 아이디는, 구매 테이블에서는 FK로 설정해야함
SELECT <열 목록>
FROM <1번째 테이블>
INNER JOIN <2번째 테이블>
ON <조인될 조건>
[WHERE 검색 조건]
SELECT *
FROM buy
INNER JOIN member
ON buy.mem_id = member.mem_id
WHERE buy.mem_id = 'GRL';
=> 결과


=> 위에는 오류
이유: 회원 테이블, 구매 테이블 모두 mem_id라는 속성을 가지고 있기 때문
구매를 안한 회원은 출력이 안되는데, 구매를 안한 회원은 구매 안했다고 나오게 할 수 없나?
= 한쪽에만 있는 정보도 출력하고 싶다!
그럴땐!
을 사용하자
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON <조인될 조건>
[WHERE 검색 조건]
<LEFT | RIGHT | FULL>
SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
FROM member M
LEFT OUTER JOIN buy B
ON M.mem_id = B.mem_id
ORDER BY M.mem_id;
LEFT OUTER JOIN
왼쪽에 있는 애들은 다 나옴
카티션 곱과 같음
SELECT *
FROM
CROSS JOIN
내용상 의미는 없음
근데 왜 씀?
-> 대용량 데이터를 만들 수 있음
원하는 정보가 같은 테이블에 있을 때~
SELECT <열 목록>
FROM <테이블> 별칭 A
INNER JOIN <테이블> 별칭 B
ON<조인될 조건>
[WHERE 검색 조건]
별칭을 다르게 해서 다른 테이블인 것마냥~