SQL join공부

까만호랭·2023년 8월 2일
1

📌JOIN

하나 이상의 테이블에서 원하는 행과 열을 참조하는 select문.

공통 칼럼이 있어야 join할 수 있다.

JOIN 기본구조

형식) select 테이블칼럼, 테이블칼럼,, from 테이블1, 테이블2 where 조건;

join의 종류는 여러가지가 있지만 많이 쓰이는 inner join, left outer join, right outer join에 대해 공부해보자

INNER JOIN

두 테이블 간의 교집합인 겹치는 칼럼이 존재해야만 사용이 가능하다.
SELECT 조회할 컬럼

  1. From 테이블1, 테이블 2 WHERE 조건문;
  2. SELECT 조회할 컬럼
    FROM 테이블1
    (INNER) JOIN 테이블2
    ON 테이블1.칼럼 = 테이블2.칼럼
    WHERE 추가조건;
으로 INNER JOIN 방법이 2가지다.
 


겹치는 칼럼인 직책 번호를 사용해 join 하면

가 나오게 된다.
각 직책 번호에 맞게 이름, 직책이 매치된 결과를 볼 수 있다.

겹치는 칼럼이 존재하는 경우에만 사용이 가능한 Inner Join이다.
그렇지 않은 경우는 Outer Join 사용

LEFT OUTER JOIN

왼쪽 테이블을 기준으로 일치하는 행만 결합되고 일치하지 않는 부분은 null 값으로 출력됨

형식)
SELECT 조회할 컬럼
From 기준 테이블1
LEFT OUTER JOIN 테이블2
ON 조건문
WHERE 추가 조건문;


왼쪽이 A테이블, 오른쪽이 B테이블이라고 가정했을 떄

위의 코드를 사용하여 LEFT OUTER JOIN을 해주었더니

결과는 이러함

A테이블이 기준이었기 때문에 학번이라는 연결고리를 가지고 B테이블이 붙었다.
INNER JOIN처럼 처음에 연결해주면 초록색 부분까지 같이 출력이 되지만
10,21,99번은 아이디와 동아리가 B테이블에 없었으므로 NULL값이 출력됨
==>> 기준테이블인 A테이블의 값은 모두 출력됐지만 B테이블은 모두 출력된 것은 아님

RIGHT OUTER JOIN


RIGHT OUTER JOIN은 LEFT 와 마찬가지로 오른쪽이 기준인 11,12,13,14,15의 자료가 기준이 되어 12,15의 자료만 모두 출력되고 나머지는 NULL값으로 출력된다.

3개 JOIN


jikwon, buser, gogek 테이블이 존재한 상태에서
jikwon.buser_num=buser.buser_no, jikwon.jikwon_no=gogek.gogek_damsano가 겹치는 칼럼인 상태이다.

직원은 원래 30명이지만 3개의 테이블을 조인함으로써 14명으로 추려짐

📌left, right outer join - 한쪽 테이블은 다 나옴 
  다른 한쪽 테이블은 비어있는 값은 null로 표시

📌레코드를 제한하는건 where : 바로 제한할때, 시작부터 조건을 걸기 위해 사용
📌group by 그룹화된 결과에 대해 조건을 걸려고 제한하는건 
  having : avg, sum같은거 사용했을때 having사용
📌group by라는 것을 사용하면 총 합쳐져서 나왔던 값이 각 행에 맞춰서 나눠져서 나눠줌
profile
남들과 함께 발자국을 남기는 까만호랭

0개의 댓글