광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ
반응형

조인이 뭐죠?

사실 이건 정규화가 뭔지 알고 가야 하는데 이건 다음 포스트에 다룰 예정임. 아 정규화를 아신다고요? 그럼 조인이 왜 필요한지도 아실거다. 정규화라는 건 테이블을 함수 종속에 따라서 째고 째고 또 째는건데 앞에서도 얘기했듯이 이건 다음 포스트에 다룰 예정이니까 걍 테이블을 째는구나 하시면 된다.

 

근데 왜 갑자기 정규화 얘기가 나오냐고? 조인이 있기 때문에 정규화가 가능한 것이다. 조인은 우리집 테이블과 남의집 테이블을 묶어서 볼 수 있게 해주는, SQL에서도 가장 중요한 연산이거든.


동등 조인

연산자에 =가 들어가면 동등 조인이다. 이게 다냐고요? 예. 

 

비동등 조인

연산자에 = 빼고 다 들어가면 비동등 조인이다. 이건 뭐… 엑셀 룩업으로 많이 하던거 있죠? 점수표로 성적 매기는거. 그런거 할 때 쓰면 된다.


이너조인

보통 제일 많이 하는 조인이 이너 조인이라서 암시적으로 할 때(그니까 SQL문에서 뭔 조인인지 언급 안 하면)는 걍 이너조인이구나 하시면 된다. 이건 교집합 뭐 비슷한 거라고 이해하시면 되는데 A 이너조인 B 하면 공통된 칼럼을 기준으로 A와 B에 다 있는 것들만 갖고온다. 

 

내추럴 조인

내추럴 조인은 특수한 이너 조인이다. 얘는 조건을 따로 명시하지 않고 걍 두 표에서 이름이 같은 칼럼들을 묻따않 빠꾸없이 묶어버리기 때문에 조인 조건을 명시하지 않는다. (조인은 뭔 칼럼으로 묶을건지 명시를 해야 한다)

 

아우터 조인

이너조인이 교집합이라면 얘는 합집합이다. 아우터 조인은 어디를 싹 다 가져오느냐에 따라 레프트 아우터 조인, 라이트 아우터 조인, 풀 아우터 조인으로 나뉘게 된다. 혹시 헷갈리신다면 

 

1) 아우터 조인을 할 때는 먼저 읽는 방향의 반대쪽에 비는 부분이 생기게 된다. 레프트 아우터 조인으로 묶게 되면 왼쪽을 다 읽고 오른쪽이랑 묶기때문에 뭔가 비는 게 오른쪽에 생긴다. 반대로 라이트 아우터 조인은 오른쪽을 먼저 다 긁어서 왼쪽이랑 묶기 때문에 뭔가 비는 게 왼쪽에 생긴다. 그럼 풀은요? 풀은 양쪽 다 읽고 붙이는거라 골고루 생긴다.

 

2) 1번과 반대되는 이야기. 아우터 조인을 할 때는 먼저 읽는 방향의 칼럼이 다 차 있다. 이건 당연한 얘기인 게, 레프트 아우터 조인은 왼쪽에서 싹 긁어오고 라이트 아우터 조인은 오른쪽에서 싹 긁어오니까. 그럼 풀은요? 풀은 다 긁어오는거라 양쪽 다 차 있지 않는 이상 공석이 생길수밖에 없다.

 

크로스 조인

그… 뭐라고 하지? 그 팩토리얼인가? 아니다 순열? 파이였나? 그 가짓수 구할때 곱하는거 있잖음. 그걸 조인으로 하는거다. 그러니까 A테이블에 행이 4개고 B테이블에 행이 5개면 말 그대로 4*5 해서 20개 행이 생기는, 곱집합을 만드는 조인이다. 얘도 암시적으로 하면 뭔 조인인지 아리까리하긴 한데, 조인할때 조건 명시가 안 됐으면 크로스 조인이다.

 

셀프 조인

보통 조인은 남의 집 테이블이랑 하는데 얘는 나랑 나를 조인한다. 그니까 내가 라이츄를 꺼내서 라이츄랑 싸우는 이게 나인가 저게 나인가 싶은 시추에이션… 이지만! 셀프 조인에서는 하나의 테이블을 서로 다른 테이블 취급해야 하기 때문에 같은 테이블에 다른 별칭을 준다. 이 라이츄는 붕성포효포(진짜 이름이다)고 이 라이츄는 허니버터칩(이것도 진짜 이름임)이다.

 

아, 별칭 안 쓰면 어떻게 되냐고요? 오라클이 안해줌.

 

반응형

'Coding > 코딩잡담' 카테고리의 다른 글

반정규화  (0) 2025.11.11
정규화  (0) 2025.11.10
엔터티  (0) 2025.11.10
서브쿼리  (0) 2025.11.05
DML과 DDL  (0) 2025.10.24