sql

JOIN 이제는 뽀개보기

임이레 2023. 7. 17. 23:50

JOIN : 같은 의미의 값을 가지는 컬럼의 값을 기준으로 테이블을 합친다.

 
[JOIN의 종류]

JOIN 의 종류

 
1. INNER JOIN : 기본이 되는 JOIN으로 , JOIN 만 적을시, 자동으로 INNER JOIN 으로 인식된다. 
    -> 두 테이블 모두에 있는 값만 합치기 

INNER JOIN
두 테이블 모두에 있는 값만을 합친다.
  • 쿼리문법 
    •  SELECT [컬럼이름]
       FROM [테이블 A이름]
       INNER JOIN [테이블 B 이름]
       ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B이름].[컬럼 B이름]
       WHERE 조건식; 
    • e.g. 
      SELECT * 
      FROM mypokemon
      INNER JOIN ability 
      ON mypokemon.number = ability.number; 
inner join e.g.
결과


LEFT JOIN / RIGHT JOIN

2.  LEFT JOIN : 왼쪽 테이블에 있는 값만 합치기

쿼리문법 

  •  SELECT [컬럼이름]
     FROM [테이블 A이름]
     LEFT JOIN [테이블 B 이름]
     ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B이름].[컬럼 B이름]
     WHERE 조건식; 
  • e.g. 
    SELECT *
    FROM mypokemon
    LEFT JOIN ability 
    ON mypokemon.number = ability.number ;

3.  RIGHT JOIN : 오른쪽 테이블에 있는 값만 합치기
 
쿼리문법 

  •  SELECT [컬럼이름]
     FROM [테이블 A이름]
    RIGHT JOIN [테이블 B 이름]
     ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B이름].[컬럼 B이름]
     WHERE 조건식;
  • e.g. 
    SELECT *
    FROM mypokemon
    RIGHT JOIN ability 
    ON mypokemon.number = ability.number;
RIGHT JOIN e.g.
결과

 
4. OUTER JOIN : 두 테이블에 있는 모든 값을 합친다. ( *단, mySql 에서는 기능이 없음) 

OUTER JOIN
mysql에서는 UNION을 통해 outer join 수행

쿼리문법 
 
SELECT [컬럼이름]
 FROM [테이블 A이름]
 LEFT JOIN [테이블 B 이름]
 ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B이름].[컬럼 B이름]
UNION   (-->  ※ UNION 은 두 쿼리의 결과를 중복을 제외하고 합쳐서 보여주는 집합 연산자이다.)
SELECT [컬럼이름]
 FROM [테이블 A이름]
RIGHT JOIN [테이블 B 이름]
 ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B이름].[컬럼 B이름]
 
e.g. 
SELECT *
FROM mypokemon
LEFT JOIN ability 
ON mypokemon.number = ability.number 
UNION 
SELECT *
FROM mypokemon
RIGTH JOIN ability 
ON mypokemon.number = ability.number;

OUTER JOIN
결과

5. CROSS JOIN : 두 테이블에 있는 모든 값을 각각 합치기

쿼리문법
SELECT [컬럼이름]
FROM [테이블 A 이름]
CROSS JOIN [테이블 B 이름]
WHERE 조건식;
 
*on 키워드가 없어도 된다. 기준이 없기 때문에 
 
e.g.
SELECT * 
FROM mypokemon
CROSS JOIN ability 

방대한 양의 컬럼수가 결과로 나옴

6. SELF JOIN : 같은 테이블에 있는 값 합치기 

쿼리문법 (모호함을 없애기 위해 별칭사용!)
SELECT [컬럼이름]
FROM [테이블 A 이름] AS t1 
INNER JOIN [테이블 A 이름] AS t2 
ON t1.[컬럼 A이름] = t2.[컬럼B이름]
WHERE 조건식;
 
e.g.
SELECT *
FROM mypokemon AS t1
INNER JOIN mypokemon AS t2
ON t1.number = t2.number;

결과

'sql' 카테고리의 다른 글

교집합 INTERSECT / 차집합 MINUS  (0) 2023.07.22
UNION , UNION ALL  (0) 2023.07.22
여러 조건을 한번에 만들기 'CASE'문  (0) 2023.07.16
IF 조건  (0) 2023.07.16
쿼리의 실행순서 알아보기  (0) 2023.07.16