오라클 SQL / 8
< INNER,OUTER JOIN 정리 >
[SQL] INNER 조인과 OUTER조인이 무엇인가요?
[광고] HWP 를 웹페이지에서 바로 열고, 편집하고, 저장하고 싶다면? 온라인으로-한글-HWP-파일-편집하기-폴라리스-오피스 폴라리스오피스 웹 한글 - 브라우저에서 무료로 사용하는 한글 한글 뷰어
stanleykou.tistory.com
- VIEW 만들기
CREATE VIEW MEMBER_VIEW //회원 뷰 만들기
AS
SELECT
M.ID,
M.NAME,
COUNT(N.ID) COUNT
FROM MEMBER M LEFT JOIN NOTICE N ON M.ID = N.MEMBER_ID
GROUP BY M.ID, M.NAME, M.EMAIL;
//이렇게 만든 뷰는 SELECT * FROM MEMBER_VIEW; 로 조회할수가 있다
- 뷰는 '볼수만 있게'함 (수정 안됨)
- 주인공은 무조건 모든컬럼 모든 로우가 다 나와야함(아우터 다 포함되어야함)
- INNER JOIN이면 자식이 무조건 주인공이다. 자식에게 없는건 포함 안됨!!
- 항상 조인에서 주인공은 하나다!
< SELF JOIN >
- SELF JOIN : 테이블이 하나밖에 없는데 그 하나가 하나를 또 합치는것. 어느 경우에 그러냐? ▶ 사원 목록을 뽑으면서 그들의 사장 이름도 뽑고싶을때 (댓글 안에 댓글, 카테고리 안에 카테고리 / 분류의 포함관계가 정해져있지 않을때 자기 참조 형태로 간다)
- 내가 원하는 컬럼만 추출하는것 : 매핑
//내 아이디에 보스 아이디값 넣기
//기존 있는거에 넣는거라 INSERT가 아닌,UPDATE를 써야한다
UPDATE MEMBER
SET BOSS_ID = 235
WHERE ID = 236;
COMMIT;
// 사원들이 참조하고 있는 보스 아이디들 보기
//(사원들 ID에 보스 ID값을 넣고 뽑아보면 각 사원들의 보스가 누군지, ID를 알수있다)
SELECT M.ID, M.NAME, B.NAME FROM MEMBER M JOIN MEMBER B ON M.BOSS_ID = B.ID;
//특정값의 컬럼 삭제하기 !!복습!!
DELETE FROM MEMBER
WHERE AGE IS NULL;
COMMIT;
- CROSS JOIN(잘안씀) : 이상한 조인?ㅋㅋㅋ 오른쪽 테이블이 열개고 왼쪽이 열두개면 120개가 나오는..곱하기 조인
< ORACLE JOIN >
- 이제껏 배운건 ANSI JOIN 이었다~~~~~~~~~이게 많이 쓰니 이걸로 외우길! 오라클 조인은 걍 필요할때만 써라!
- 오라클은 FULL OUTER JOIN을 지원하지 않는다
< UNION >
- 컬럼이 늘지 않는데 결합하는것을 레코드 결합 이라고 하는데 ▶ 이걸 할때 유니온으로 한다
(댓글이면 댓글, 아이디면 아이디.. 여러 테이블 돌아다니면서 검사하기 힘드니까 한번에 같은 속성인 애들을 싹 검사하고 싶을때)
- 유니온은 컬럼의 갯수만 같으면 가능하다
- 한테이블에있는 모든글들중에 공지사항만 상단에 고정해놓고 나머지 게시글은 정상출력할때 유니온 같은걸 쓴다
SELECT * FROM(
SELECT ID,NAME,'MEMBER' "TABLE" FROM MEMBER
UNION
SELECT ID,TITLE,'NOTICE' "TABLE" FROM NOTICE)
A
WHERE A.NAME LIKE '%을%';
//홑따욤표를 쓰는 이유는 어떤 테이블의 어떤 컬럼인지 구분하기 위해 '상수'를 붙여주는 개념이라고 보면됨
- 인터셉트는 유니온(위아래결합)을 했을때 교집합되는것들을 남김
- 뷰는 '목록페이지' 에서만 사용한다 (상세페이지에선 사용 X 상세페이지는 하나만 보여주는것이기 때문에)