카테고리 없음

MySQL - JOIN

쿠쿠s 2022. 3. 11. 22:01

 

JOIN

JOIN 은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 줍니다. 간단하게 테이블을 조립한다 라고 생각하면 될 것 같습니다.

 

테이블 실습 - https://www.w3schools.com/mysql/trymysql.asp?filename=trysql_select_all 

 

MySQL Tryit Editor v1.0

WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, and Opera. If you use another browser you will still be able to use our Try SQL Editor, but a different version, usin

www.w3schools.com

 

 


 

 

1. JOIN(INNER JOIN) - 내부 조인

- 양쪽 모두에 값이 있는 행(NOT NULL) 반환

- INNER 는 선택사항.

 

SELECT * FROM Categories C
JOIN Products P 
  ON C.CategoryID = P.CategoryID;

 

위와 같이 작성하면 양쪽 모두 값이 있는 행을 가져오는데 Categories 와 Proudct의 CatgegoryID 가 같은 테이블들을 합친 결과가 나오게 됩니다. 여기서 C, P 는 '변수' 라고 생각하시면 됩니다. 아래와 같이 응용이 가능합니다.

 

SELECT C.CategoryID, C.CategoryName, P.ProductName
FROM Categories C
JOIN Products P 
  ON C.CategoryID = P.CategoryID;

선택할 어떤 테이블의 레코드를 가져올지 가독성이 뛰어나게 됩니다.

 

 

 


 

 

 

2. LEFT, RIGHT JOIN - 외부 조인

 

반대쪽에는 데이터가 있든 없든(NULL), 선택된 방향에 있으면 출력 - 행 수 결정

 

 

LEFT JOIN - 예제)

SELECT
  C.CustomerName, S.SupplierName,
  C.City, C.Country
FROM Customers C
LEFT JOIN Suppliers S
ON C.City = S.City AND C.Country = S.Country;

 

 

 

반대쪽에는 데이터가 있든 없든(NULL), 선택된 방향에 있으면 출력 - 행 수 결정 LEFT, RIGHT 왼쪽 오른쪽 차이이지 하는 일은 똑같습니다.

 

RIGHT JOIN - 예제)

SELECT
  C.CustomerName, S.SupplierName,
  C.City, C.Country
FROM Customers C
RIGHT JOIN Suppliers S
ON C.City = S.City AND C.Country = S.Country;

 

 

위 다이어그램과 같이 한쪽에 데이터가 비어도 테이블을 가져옵니다. 직접 실행을 해보시면 확연히 다른점을 확인 할 수 있습니다.

 

 


 

 

3. FULL OUTER JOIN - 전체 외부 조인

 

 

문법

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;

왼쪽 테이블과 오른쪽 테이블 레코드에 일치하는 모든 레코드를 가져옵니다. 많이 보이지는 않아서 이런게 있다 아시면 좋을 것 같습니다.