반응형
1. Join 문이란?
두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용
2. Join 문을 사용하는 이유 (왜?)
찾는 데이터가 한 테이블에 모두 있으면 좋겠지만 보통 한 테이블에 있지 않고 여러 테이블에 나눠져 있습니다.
두 개이상의 테이블을 엮어서 원하는 데이터를 추출하기 위해서 사용합니다.
2-1 왜 테이블이 나눠져있나요?
1. 시간단축 : 모든 데이터가 한 테이블에 있으면 데이터 조회에 많은 시간이 소요됩니다.
2. 관리용이 : 세부적으로 데이터가 나눠져있어야 데이터 관리가 용이합니다.
3. 확장성 : 신규 프로그램 셋업 시 작은단위의 테이블이 있어야 빠르게 프로그램 세팅 가능
3. Join문 무엇이 있나요?
Join은 총 4가지가 있습니다.
- INNER JOIN(내부 조인) : 두 테이블 조인 시 내가 찾는 데이터가 두 테이블에 모두 있어야 조회된다.OUTER JOIN(외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
- OUTER JOIN(외부 조인) : 한개의 테이블만 존재해도 데이터가 나온다.
(차례대로 LEFT OUTER JOIN , RIGHT OUTER JOIN , FULL OUTER JOIN )
- CROSS JOIN(상호 조인) : 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다.
총 9 개의 LOW가 조회된다.
- SELF JOIN(셀프 조인) : 자기와 자기가 조인한다는 의미 1개의 테이블을 사용한다.
4. JOIN은 어떻게 사용하는가?
INNER JOIN(내부 조인) :
조인할 조건에 어떤 열(컬럼)을 기준으로 일치하는것들을 조회할 것인지 작성해줍니다.
SELECT * -- 조회할 컬럼
FROM [테이블명] AS A -- 기준 테이블
INNER JOIN [테이블명2] AS B -- 조인할 테이블
ON A.ID = B.IDValue -- 조인할 조건
OUTER JOIN(외부 조인) :
조인할 조건에 어떤 테이블 기준으로 일치하는것들을 조회할 것인지 작성해줍니다.
- LEFT OUTER JOIN
왼쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 null 값으로 채워짐.
SELECT * -- 조회할 컬럼
FROM [테이블명] AS A -- 기준 테이블
LEFT OUTER JOIN [테이블명2] AS B -- 조인할 테이블
ON A.ID = B.IDValue -- 조인할 조건
- RIGHT OUTER JOIN
LEFT OUTER JOIN의 반대라고 생각하면된다 테이블 기준만 달라짐
SELECT * -- 조회할 컬럼
FROM [테이블명] AS A -- 기준 테이블
RIGHT OUTER JOIN [테이블명2] AS B -- 조인할 테이블
ON A.ID = B.IDValue -- 조인할 조건
- FULL OUTER JOIN
두 테이블의 모든 것들을 가져옴 (조건에 해당하지 않는 것들은 NULL 값 도출)
SELECT * -- 조회할 컬럼
FROM [테이블명] AS A -- 기준 테이블
FULL OUTER JOIN [테이블명2] AS B -- 조인할 테이블
ON A.ID = B.IDValue -- 조인할 조건
CROSS JOIN(상호 조인) :
A 행 개수 * B 행 개수 모든 행에 대하여 곱한 값의 데이터가 나옵니다.
SELECT * -- 조회할 컬럼
FROM [테이블명] AS A -- 기준 테이블
CROSS JOIN [테이블명] AS B -- JOIN 테이블
SELF JOIN(셀프 조인) :
INNER JOIN의 문법을 사용하며 자기자신에 대하여 JOIN 진행합니다.
SELECT * -- 조회할 컬럼
FROM [테이블명] AS A -- 같은 테이블
INNER JOIN [테이블명] AS B -- 같은 테이블
ON a.id = b.age -- 조건문
이와 같이 JOIN 에 대하여 알아보았습니다.
어떤 조건으로 JOIN 하는 것이 좋을지 알아보도록 다음번에 가지고 오도록 하겠습니다.
반응형
'데이터베이스' 카테고리의 다른 글
[SQLD] SQLD 후기 및 공부방법 (0) | 2023.06.25 |
---|---|
MSSQL sp 명령어 (0) | 2023.01.23 |
[MSSQL] 한글(글자) 깨짐현상 (0) | 2023.01.02 |
[Database] WITH 구문 (0) | 2022.11.25 |
[MSSQL]데이터베이스가 사용 중이어서 배타적으로 액세스 할 수 없습니다. (0) | 2022.10.20 |