[SQL] JOIN 생각보다 증말증말 많이 쓴다..

SONGB·2023년 7월 7일
1

SQL

목록 보기
2/13

JOIN

나는 쪼인이라면 친구들이 같이 밥 쪼인하실? 하면 ㄱㄱ하는 사람이다.
사실 나는 개소리장인이고 지금도 멍소리를 하는 중이다.🐶


그럼 찐으로 시작해보겠숨당.🚀



INNER JOIN

가장 기초가 되는 Join이다.
그림으로 보면 교집합이 보이지 않는가? 교집합이 무엇인지 모른다면 내가 알 바는 아니다.

A테이블과 B테이블에 모두 데이터가 있어야만 한다.

사진에 쿼리문이 나와있지만, 적을 게 없는 관계로 슬쩍 적어본다.

SELECT STUDENTS_ID, STUDENTS_NAME
  FROM STUDENTS st
  JOIN PART_TIME pt
	ON st.STUDENTS_ID==pt.STAFF_ID
 WHERE st.age>20;

OUTER JOIN

내부 조인은 두 테이블에 모두 데이터가 존재해야 나온지만 외부 조인은 그렇지 않다.
그러므로 맨 위 사진에서 보이는 것들 중 교집합에 해당되는 그림을 제외한 모든 것들은 외부 조인에 해당한다.

1. LEFT OUTER JOIN

오른쪽 테이블에 왼쪽에 해당하는 값이 없더라도 모두 내놓는다.
나는 말을 아주아주 못 한다. 나도 내가 무슨 말을 하는지 모르겠다.


IdName
1
2
3
4

IdSalaryage
11,000,00025
22,000,00028
44,500,00034

IdNameSalaryage
11,000,00025
22,000,00028
3nullnull
44,500,00034

이렇게 된다. 너무 길어져서 고민이 됐지만 html을 적고 싶지 않은 관계로 가독성을 포기했다.
사람은 쉽게 포기하면 안된다지만 유도리있게 살아야 한다고 생각한다.
역시나 난 한 가지 주제로 오래 이야기 하지 못 한다.
아무튼 html을 적지 않고도 한 라인에 나란히 쓰는 방법을 알고 싶지만 난 핑프다 피스...🤟

💻 다음은 코드

SELECT *
  FROM STUDENTS st
  LEFT OUTER JOIN PART_TIME pt
	ON st.STUDENTS_ID==pt.STAFF_ID
 WHERE age>25;

이러면 위에 합쳐진 테이블에서 1번 row를 제외한 테이블이 결과로 나올 것이다.


2. RIGHT OUTER JOIN

같은 내용을 또 말하려니 상당히 귀찮은 부분이 있다.
그냥 왼쪽의 테이블에서 없는 데이터여도 오른쪽에 ID가 존재하면 나온다. 데이터가 없어도 되는 테이블이 반대인 것!


3. FULL OUTER JOIN

얘는 그냥 왼쪽이든 오른쪽이든 데이터가 없어도 한쪽만 있으면 결과로 출력된다.


4. 이외의 OUTER JOIN

WHERE절 추가로 교집합을 빼준다.

SELECT *
  FROM STUDENTS st
  FULL OUTER JOIN PART_TIME pt
	ON st.STUDENTS_ID==pt.STAFF_ID
 WHERE st.STUDENTS_ID IS NULL
    OR pt.STAFF_ID.ID IS NULL;

🧨🏢🧨
나도 그냥 간단하네 하면서 넘겨왔던 JOIN이지만 실제로 쿼리문을 보면 여러 가지의 JOIN문을 많이 접하게 되더라.
그때 굳이 다이어그램을 그리지 않아도 바로 이해할 수 있을 만큼의 이해도는 필요한 것 같다.

profile
⚽⚾데굴데굴 굴러가는 내 맘대로 벨로그🏀🏐

0개의 댓글