Heestory

0602 NewLecture)INNER JOIN,OUTER JOIN,SELF JOIN,UNION(34~39강) 본문

개발(~국비)/SQL

0602 NewLecture)INNER JOIN,OUTER JOIN,SELF JOIN,UNION(34~39강)

까만밀가루 2022. 6. 2. 15:33

실행 순서 

: FROM → CONNECT BY → WHERE → GROUP BY → HAVING → SELECT → ORDER BY  

 

조인의 종류 :  INNER JOIN, OUTER JOIN, SELF JOIN, CROSS JOIN

 

34강 ) INNER 조인(JOIN)

SELECT * FROM MEMBER;

SELECT * FROM NOTICE;

 

SELECT * FROM MEMBER INNER JOIN NOTICE ON MEMBER.ID=NOTICE.WRITER.ID;

 

서로 관계가 있는 레코드들은 INNER

관계가 없는 레코드들은 OUTER

 

#.INNER JOIN : 관계가 있는 레코드들만 합치는 조인, 기본 JOIN

출처 :https://www.youtube.com/watch?v=BZPX-arrwHI&list=PLq8wAnVUcTFVq7RD1kuUwkdWabxvDGzfu&index=34

왼쪽 : 관계가 없는 OUTER 3개

오른쪽 관계가 없는 OUTER 2개

 

뉴렉만 INNER 조인 가능하다.

출처 :https://www.youtube.com/watch?v=BZPX-arrwHI&list=PLq8wAnVUcTFVq7RD1kuUwkdWabxvDGzfu&index=34

조인할 때의 자식 레코드 수만큼이 INNER 조인할 경우의 레코드 수 = 3개


35강 ) OUTER JOIN

LEFT/RIGHT/FULL OUTER JOIN

 

LEFT OUTER JOIN : 왼쪽 OUTER 포함하여 합침 > 이때 나머지는 NULL 값으로 

RIGHT OUTER JOIN : 오른쪽 OUTER 포함하여 합침

FULL OUTER JOIN :함께 합침


36강)  OUTER JOIN을 이용한 게시글 목록 조회

*OUTER가 INNER보다 많이 쓰임

 

게시글의 컬럼명을 식별하기 위해 테이블명을 사용한다.

컬럼을 지정하는 식별자를 줄이기 위해서 테이블의 별칭을 사용한다.

 

Q.ID,NAME 그리고 회원별 작성한 게시글 수를 조회하시오.

SELECT M.ID, M.NAME, COUNT(N.ID)

FROM MEMBER M INNER JOIN NOTICE N

ON M.ID=N.WRITER_ID

GROUP BY M.ID,M.NAME;

 

MEMBER 레코드 별로 COUNT를 집계한다.

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓왜 OUTER JOIN이 더 자주 쓰이는가??↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

출처 : https://www.youtube.com/watch?v=NAuHvZDU15M&list=PLq8wAnVUcTFVq7RD1kuUwkdWabxvDGzfu&index=36

INNER JOIN의 경우 게시물을 쓰지 않은 사람은 아예 사라진다. 

주인공 테이블을 잡아 그걸 중심으로 JOIN한다.


37강)SELF JOIN

:추가하고자 하는 칼럼의 내용을 스스로 가지고 있을 때

 

SELECT * FROM MEMBER M LEFT OUTER JOIN MEMBER B ON B.ID = M.BOSS_ID;

M의 사원 정보는 다 필요하기 때문에 LEFT OUTER


39강)UNION

SELECT ID, NAME FROM MEMBER;

   UNION

SELECT WRITER_ID, TITLE FROM NOTICE;

 

 

 

 

'개발(~국비) > SQL' 카테고리의 다른 글

0602 NewLecture)제약 조건  (0) 2022.06.02
0602 NewLecture) 29강~33강, 서브쿼리, 집계함수  (0) 2022.06.02
0602 NewLecture) 20~28강  (0) 2022.06.02
0602 NewLecture) 정규식 표현  (0) 2022.06.02
0601 NewLecture) 6강~17강  (0) 2022.06.02