일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- @Controller
- 인프런
- 스프링
- 서브쿼리
- @RestController
- MVC
- Join
- 김영한
- select
- SQL
- toUpperCase
- 프레임워크
- 자바
- 뉴렉처
- DDL
- Model1
- 코테
- STS
- 프로그래머스
- 서블릿
- 인텔리제이
- AOP
- Model2
- 세션
- 코딩테스트
- MVC2
- 기술 대비
- JSP
- order by
- 메이븐
- Today
- Total
Heestory
0602 NewLecture)INNER JOIN,OUTER JOIN,SELF JOIN,UNION(34~39강) 본문
실행 순서
: 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
왼쪽 : 관계가 없는 OUTER 3개
오른쪽 관계가 없는 OUTER 2개
뉴렉만 INNER 조인 가능하다.
조인할 때의 자식 레코드 수만큼이 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이 더 자주 쓰이는가??↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
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 |