조인은 평상시쓰는것이므로 연습해야한다

 

VIEW

뷰: 멀리볼수도, 작게볼수있는 보고싶은대로 테이블단위

실질저장모델은 아니지만 , 그모양자체를 하나의 다른이름으로 사용가능,코드를 단순화시킴

수정,삭제,업데이트불가, 조회(읽기)전용의 테이블형태이다. 1.복잡한쿼리간단하게, 2.사용자가들이 볼수없게 가림

CREATE VIEW NOTICE_VIEW21 
AS 
SELECT N.ID, N.TITLE, N.WRITER_ID, N.REGDATE, N.HIT, N.FILES, M.NAME WRITER_NAME, COUNT(C.ID) CMT_COUNT
FROM NOTICE N 
    LEFT JOIN MEMBER M ON N.WRITER_ID = M.NICNAME 
    LEFT JOIN "COMMENT" C ON N.ID = C.NOTICE_ID 
    GROUP BY ROWNUM, N.ID, N.TITLE, N.WRITER_ID, N.REGDATE, N.HIT, N.FILES, M.NAME;

SELECT * FROM NOTICE_VIEW21 
WHERE ROWNUM BETWEEN 1 AND 10 
ORDER BY REGDATE DESC;

 

SELF JOIN

자기가 자기자신을 조인

데이터가 서로 포함관게를 가지는 경우 : 담당,구성,연락

EX 게시글의 댓글이 댓글이참조하는경우

참조키가 다른테이블이아니라 자기것

참조키는

SELECT M.*, B.NAME BOSS_NAME 
FROM MEMBER M
    LEFT JOIN MEMBER B ON B.NICNAME = M.BOSS_NICNAME;

 

SELECT M.*, B.NAME BOSS_NAME, B2.NAME B2_NAME 
FROM MEMBER M
    LEFT JOIN MEMBER B ON B.NICNAME = M.BOSS_NICNAME 
    LEFT JOIN MEMBER B2 ON B2.NICNAME = B.BOSS_NICNAME;

B2.NICNAME (부모)= B.BOSS_NICNAME;(자식)

자식이 부모를 참조하는 형식 

 

부모가 자식을 참조할수없음 

 

CROSS JOIN

실무에서 쓰일일이 적음

 

조인대신 서브쿼리사용

그동안 조인해서 그룹바이 집계

부모의 컬럼을 추가할땐 조인해서 컬럼추가했었다.

컬럼을 가져와야할 경우 컬럼추가시 조인하지않고도 가능하다

 

서브쿼리로 간단히 가능

 

+ Recent posts