MYSQL 조인의 종류
MYSQL 조인의 종류
MYSQL 조인의 종류
조인의 종류
1.JOIN
둘 이상의 테이블 간의 논리적 관계를 기준으로 데이터를 검색하여 결과 집합을 만든다.
기본형식
SELECT 열 목록
FROM 첫번째 테이블 join_type 두번째 테이블
ON(join_condition)
* join_type : 수행될 조인 유형을 지정한다. (INNER, OUTER, CROSS, SELF)
* join_condition : 조인할 행의 각 쌍에 대해 선택할 조건을 정의한다. 일반적으로 키와 키를 지정
고려사항
1) 조인은 하나의 쿼리에서 여러 테이블이 참조되기 때문에 모든 열 참조는 명확해야 한다. (테이블이름.컬럼이름)
2) 조인조건은 FROM절이나 WHERE 절에 지정할 수 있으며 FROM 절에 지정하는 것이 좋다.
3) WHERE절과 HAVING 절에는 조인 조건에서 선택된 행을 자세히 필터링하는 검색 조건이 포함될 수 있다.
2. INNER JOIN
결합된 테이블에 조건의 내용이 공통으로 들어가 있는 값을 결과 집합으로 만들어준다. ON 다음에 들어가는 조건에 맞는 내용들만 보여주게 된다.
기본형식
SELECT 열 목록
FROM 첫번째 테이블 [AS 별칭] INNER JOIN 두번째 테이블 [AS별칭]
ON(join_condition)
SELECT 회원이름, 구매한도서, 작가, 구매시기
FROM 회원정보 INNER JOIN 구매내역
WHERE 회원이름 = '김군'
SELECT DISTINCT M.회원정보, M.회원이름, M.거주지역
FROM 회원정보 AS M
INNER JOIN 구매내역 AS B
ON M.회원번호 = B.회원번호
ORDER BY M.회원번호
SELECT M.회원이름, B.구매한도서, P.가격
FROM 회원정보 AS M
INNER JOIN 구매내역 AS B
ON M.회원번호 = B.회원번호
INNER JOIN 가격 AS P
ON B.구매한도서 = P.구매한도서
ORDER BY M.회원이름
2.2 OUTER JOIN
INNER JOIN 문을 포함하고 한쪽에만 내용이 있더라도 지정한 기준 테이블에 있는 모든 데이터를 가져오는 조인방식
기본형식
SELECT 열목록
FROM 첫번째 테이블
<LEFT | RIGHT | FULL> OUTER JOIN 두번째 테이블
ON(join_condition)
[WHERE 검색조건]
(1) LEFT OUTER JOIN
왼쪽 테이블이 기준이 되어서 그 테이블에 있는 데이터를 모두 가져온다. 기준으로 지정되지 않은 오른쪽 테이블에서 가져올 수 없는 열은 NULL로 표현된다.
SELECT M.회원이름, B.구매한도서, B.작가, B.구매시기
FROM 회원정보 AS M
LEFT OUTER JOIN 구매내역 AS B
ON M.회원번호 = B.회원번호
ORDER BY M.회원번호
(2) RIGHT OUTER JOIN
오른쪽 테이블이 기준이 되어서 그 테이블에 있는 데이터를 모두 가져온다. 기준으로 지정되지 않은 왼쪽 테이블에서 가져올 수 없는 열은 NULL로 표현된다.
SELECT B.구매한도서, B.작가, B.구매시기, M.회원이름
FROM 회원정보 AS M
RIGHT OUTER JOIN 구매내역 AS B
ON M.회원번호 = B.회원번호
ORDER BY B.구매시기
(3) FULL OUTER JOIN
왼쪽과 오른쪽에 관계없이 조건이 일치하지 않아도 양쪽의 모든 내용을 포함해서 나타낸다.
SELECT M.회원이름, B.구매한 도서, B.작가, B.구매시기
FROM 회원정보 AS M
FULL OUTER JOIN 구매내역 AS B
ORDER BY M.회원번호
2.3 CROSS JOIN
결과값이 한쪽 테이블의 모든행들과 다른쪽 테이블의 모든 행을 조인시킨다.
결과 집합은 두 테이블의 개수를 곱한 값만큼 생성되며, 조인되는 테이블에 공통되는 행이 없어도 되며 조건절인 ON 키워드가 사용되지 않는다.
SELECT M.회원이름, B.구매한도서, B.작가, B.구매시기
FROM 회원정보 AS M
CROSS JOIN 구매내역 AS B
ORDER BY M.회원번호
2.4 SELF JOIN
하나의 테이블에 같은 데이터가 존재하는데 그 의미가 다르게 존재하는 경우. 즉, 같은 데이터이지만 다른 열에 있는 경우에는 두 테이블을 서로 SELF JOIN 문으로 확인가능
SELECT A.회원이름, A.주거지역, A.연락처, B.회원이름 AS 추천인, B.연락처
FROM 회원정보 AS A
INNER JOIN 회원정보 AS B
ON A.추천한 회원 = B.회원번호
WHERE A.회원이름 = '김군'