일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- PostgreSQL
- DBeaver
- SQL 분석함수
- 문과코딩
- SQL자격증
- SQL D 자격증
- 문과SQL
- sql함수
- SQL문과생
- SQL D 독학
- 문과 코딩독학
- group by
- 마케터SQL
- sql독학
- MySQL
- SQL COUNT함수
- 마케터코딩
- 코딩독학
- outer join
- SQL D자격증
- SQL혼자서
- ROLLUP함수
- inner join
- DEBEAVER
- 마케팅코딩
- SQL D
- 조인
- SQL
- SQL독학으로 자격증
- join
- Today
- Total
문과생의 우당탕탕 공부 기록
04. SELF 조인) EMPLOYEE테이블로 SELF JOIN이해하기, ||연산자 본문
SELF JOIN은 말 그대로
SELF = 스스로
JOIN = 조인한다
라는 뜻이다.
의미: 같은 테이블끼리 특정 컬럼을 기준으로 매칭되는 컬럼을 출력하는 조인이다. 즉 같은 테이블의 데이터를 각각의 집합으로 분류한 후 조인한다.
table을 하나 만들어서
self join을 연습해보자
EMPLOYEE라는 테이블을 만들자
거기에 EMPLOYEE_ID 라는 PRIMARY KEY를 넣을 거고
FIRST_NAME은 255바이트의 글자로, NULL이 아니게
LAST_NAME도 마찬가지
그리고 여기에 추가적으로 MANAGER_ID라는 것을 넣을거야
이건 뭐냐면
FOREIGH KEY로 MANAGER_ID를 넣을건데, 이거에 대한 레퍼런스는 EMPLOYEE에서 갖고올거임
(MANAGER_ID는 EMPLOYEE테이블에서 참조했다는 뜻)
ON DELETE CASCADE를 하는 이유는, 부모테이블 ROW와 자식테이블 ROW를 함께 연결하기위해서이다.
다음으로
이런 값을 테이블에 넣을 것이다.
그래서 테이블이 이렇게 채워졌다.
여기까지가 설정값이고 , 이제 셀프조인하러 고고
셀프조인 과정1
EMPLOYEE를 가상의 두개의 집합으로 만들어서 하나는 E 하나는 M으로 만든것이다.
그 안에서 M의 EMPLOYEE_ID와 E의, MANAGER_ID는 사실상 같은 것이고
이름으로 출력하길 바란것이다.
결과적으로 새로운 EMPLOYEE와 MANAGER 라는 이름안에
사람들의 FIRST_NAME+LAST_NAME으로 작성된 값이 들어가게되었다.
*여기에는 NULL값을 가진 WindyHays가 안나왔다.
sql에서 || 연산자
아 참고로 || 연산자는 문자연결 연산자이다.
E.first_NAME ||''|| E.LAST_NAME EMPLOYEE
이 SELECT 다음 문자는 E. FIRST_NAME문자와 E.LAST_NAME 문자를 합쳐서
=> 새로운 이름인 'EMPLOYEE'로 정해서 보여줘 라는 뜻이다.
그리고 ||이 표시는 엘지그램이나 삼성노트북에서는 엔터위에 있는 shift+원화키 누르면된다.
이거는 파이썬에서도 자주 쓰이고, 다른 컴터 뭐 사용할 때도 자주 쓰이니 원화표시 알아두기를!
다시 이너조인으로 돌아와서
inner join과 left join의 비교

자 전부 똑같은 쿼리인데 inner join-> left join으로 바꿨다.
그러면 WindyHays가 manager null값을 가진채로 나타난다.
이유는!!
inner join은 둘다 서로가 서로의 집합에 존재하는 것만을 불러내는 것인데, WindyHays는 manager로 매칭되는 값이 없어서(=null값이어서) inner join때는 등장하지 못함.
근데 실무에서는 null값이 존재하더라도 일단은 전직원을 다 보고싶은 상황이 많아서
여기서 left join을 하면
manager가 있는 사람도 보고 + manager가 없는 사람도 보고싶다 가 되버린다!!
한번더 정리하면
지금 left join을 살펴보면
from
EMPLOYEE E left join EMPLOYEE m
on M.EMPLOYEE_ID = E.MANAGER_ID
이렇게 되는거니까, 왼쪽인 employee는 일단 다 보자 (오른쪽인 employee manager랑 상관없이)
그리고 manager는 있으면 값이 채워지고, 없으면 null로 채워지는 것
self join을 다시 정리하자면
동일한 테이블에서-> 각각의 다른 가상의 집합으로 구성(=셀프조인) -> 그 다음 그 안에서 내가 원하는 정보 추출!!
*패캠 이경오 선생님의 말씀을 인용하였습니다.
'SQL 공부 > 조인과 집계 데이터' 카테고리의 다른 글
06. CROSS JOIN) CATESIAN PRODUCT연산과 크로스조인 (0) | 2023.01.14 |
---|---|
05. FULL OUTER 조인) 풀 아우터조인으로 RIGHT ONLY만 하는법 (0) | 2023.01.13 |
03. OUTER JOIN) BASKET테이블로 LEFT,RIGHT JOIN 이해하기 (0) | 2023.01.10 |
02. INNER JOIN) BASKET테이블로 이너조인 이해하기 (0) | 2023.01.09 |
01. 조인이란) TABLE제작과 조인의 개념 (0) | 2023.01.07 |