반응형

1.조인이란?

-> 데이터베이스를 연결하여 데이터를 검색하는 방법

-> PK 혹은 FK로 두 테이블을 연결

-> 적어도 하나의 칼럼은 서로 공유되고 있어야함

 

Customer 테이블
Reservation 테이블

 

2.INNER JOIN = 교집합 

  • 기준테이블과 JOIN 한 테이블의 중복된 값을 보여줌
  • 결과값 : A의 테이블과 B테이블이 모두 가지고 있는 데이터만 검색
  • ON 절에서는 WHERE 절에서 사용할 수 있는 모든 조건을 사용할 수 있음
  • 표준 SQL과는 달리 MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 모두 같은 의미로 사용.
--문법--
SELECT *
FROM 첫번째 테이블 이름
INNER JOIN 두번쨰 테이블 이름

ON 조건

SELECT *

FROM 첫번째 테이블 이름
JOIN 두번째 테이블 이름
ON 조건

SELECT *
FROM 첫번째 테이블 이름 AS 별칭 , 
            두번째 테이블 이름 AS 별칭
WHERE 조건

--예제--
Reservation 테이블의 Name 필드와 Customer 테이블의 Name 필드가 서로 일치하는 레코드만 

INNER JOIN 으로 가져옴

1. 
SELECT *

FROM Reservation
INNER JOIN Customer
ON Reservation.Name = Customer.Name;

2. 
SELECT *

FROM Reservation
JOIN Customer
ON Reservation.Name = Customer.Name;

3.

SELECT *
FROM Reservation AS r, Customer AS c
WHERE r.Name = c.Name;

 

결과

 

3. LEFT OUTER , RIGHT OUTER 조인

  • 하나의 테이블 기준으로 합치는 조인

  • LEFT JOIN
    • 왼쪽 테이블을 중심으로 오른쪽의 테이블을 매치
    • 왼쪽 테이블의 한 개의 레코드에 여러개의 오른쪽 테이블 레코드가 일치할 경우
      >>> 해당 왼쪽 레코드를 여러번 표시
    • 왼쪽은 무조건 표시, 매치되는 레코드가 오른쪽에 없으면 null
    • ON 절의 조건을 만족하지 않는 경우, 첫 번째 테이블 필드(왼쪽)값은 그대로 가져옴.
--문법--
SELECT *
FROM 첫번째 테이블 이름
LEFT JOIN 두번째 테이블 이름
ON 조건

--예제--
Reservation 테이블의 Name 필드를 기준으로 Customer 테이블의 Name 필드와 일치하는 레코드만 LEFT JOIN으로 가져온 후, 그 중 ReserveDate 필드 값이 2019.09.13 이후인 레코드만 선택

SELECT *
FROM Reservation
LEFT JOIN Customer
ON Reservation.Name = Customer.Name
WHERE ReserveDate > '2019-09-13';

 

결과

 

 

 

  • RIGHT JOIN
    • 오른쪽 테이블 중심으로 왼쪽 테이블을 매치
    • LEFT JOIN 에서 방향을 오른쪽으로만 바꾼 것
      >>> 해당 레코드가 여러번 표시되거나, null 표시
--문법--
SELECT *
FROM 첫번째 테이블 이름
RIGHT JOIN 두번째 테이블 이름
ON 조건

--예제--
Customer 테이블의 Name 필드를 기준으로 Reservation 테이블의 Name 필드와 일치하는 레코드만을 RIGHT JOIN으로 가져오는 예제


SELECT * 
FROM Reservation
RIGHT JOIN Customer
ON Reservation.Name = Customer.Name;

결과

반응형

'Database Study > SQL' 카테고리의 다른 글

[Oracle DB] 커서 (CURSOR)  (0) 2020.01.06
[Oracle DB]PL / SQL 기초  (0) 2020.01.06
[Oracle DB] 오라클_SQL (쿼리문) 처리 및 실행 순서  (0) 2020.01.06
Select query 튜닝  (0) 2020.01.03
[MySQL]기본 쿼리 & 내장함수 & JOIN  (0) 2019.09.11

+ Recent posts