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

[JOIN의 종류]

1. INNER JOIN : 기본이 되는 JOIN으로 , 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;
- SELECT [컬럼이름]


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;


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


쿼리문법
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;


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 |