본문 바로가기
Database/MySQL

[Programming][MySQL] 다양한 JOIN 함수 (feat. KOSPI50 종목)

by LydiaRyu 2021. 7. 27.
반응형

 

  • 본 페이지에서 사용하는 테이블에 대한 설명의 아래 JOIN 활용하기 링크에서 확인:)

2021.07.27 - [Programming/MySQL] - [Programming][MySQL] JOIN 활용하기(feat. KOSPI50 종목)

 

[Programming][MySQL] JOIN 활용하기(feat. KOSPI50 종목)

데이터 설명 JOIN 함수를 사용하기 위해 price, analysis, information 세 테이블을 임의로 만들었다. price 테이블 INVESTING.COM에서 출력한 KOSPI50 종목(2021.07.26 기준)의 가격 데이터로 id, 종목번호(ticke..

lydia-ds.tistory.com

 

  • NATURAL JOIN
SELECT p.ticker, p.stock, p.close,
    i.gender, i.age, i.firm 
FROM price AS p NATURAL JOIN information AS i;

NATURAL JOIN

 

NATRUAL JOIN 은 INNER JOIN과 같은 역할을 한다. 두 테이블 간의 일치하는 경우만 출력하는 것이다. 단지, INNER JOIN처럼 ON으로 key를 지정하지 않고 그냥 NATURAL JOIN만 사용해서 JOIN 할 수 있다. 

 

  • CROSS JOIN
SELECT p.ticker, p.stock, p.close,
    i.gender, i.age, i.firm 
FROM price AS p CROSS JOIN information AS i;

CROSS JOIN

 

CROSS JOIN은 한 행씩 JOIN 하는 모든 행들과 결합하여 만들어지는 테이블이다. 오른쪽 그림과 같이 순서대로 모든 행과 JOIN이 이루어진다. 출력 결과를 보면, 삼성전자가 20행의 information 데이터와 JOIN 되었고 다음 순서로 카카오가 JOIN 되고 있다.

 

  • 자기 자신과 JOIN
SELECT *
FROM information AS i LEFT OUTER JOIN information AS i_join
ON i.buy = i_join.sell;

자기 자신과의 JOIN

 

JOIN문을 같은 테이블끼리도 수행할 수 있다. 위의 쿼리에서 information 테이블을 buy 열(Column)과 sell 열(Column)로 JOIN 했다. 그 결과, buy 열(Column)의 값과 같은 값의 sell 값이 JOIN 되어 오른쪽에 출력되는 것을 볼 수 있다. 이것을 통해 어떤 종목을 샀을 때 그 종목을 판 사람은 누구인지를 파악할 수 있다.  

 

자기 자신과의 JOIN은 주로 팀에서 하위 부서나 집단의 하위 집단들을 표현할 때 속하는 개념으로 사용해준다.

728x90

댓글