일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- InteliJ
- tㅐ
- 종단관심사
- 데이터베이스생성
- onlyfullgroupby
- MySQL
- 2챕터독서
- final변수
- 내장객체영역
- 스프링
- 첫줄
- requestparameter
- 생크림활용기
- 요청파라미터
- 소트라테스익스프레스
- 횡단관심사
- 책추천
- 도전로그
- 일상
- 자기계발
- 노스마트폰챌린지
- 데이로그
- JSP
- 테이블생성
- 권한부여
- daily
- 복습!
- diario
- 평가용
- 데일리
- Today
- Total
Emma.log()
오라클 조인 이너조인 아우터조인 본문
오라클 조인
1. INNER JOIN
Inner Join은 교집합 (A ∩ B) 연산과 같다. 조인키 컬럼값이 양쪽 테이블 데이터 집합에서 공통적으로 존재하는 데이터만 조인해서 결과 데이터 집합으로 추출한다.
이너조인은 생략할수있고, 콤마로 나타낼수있다.
<사용법>
SELECT 컬럼명 [, 컬럼명]
FROM 테이블 A
[INNER] JOIN 테이블 B
ON 테이블A.조인키컬럼 = 테이블 B.조인키컬럼;
또는
SELECT 컬럼명 [,컬럼명]
FROM 테이블 A, 테이블 B
WHERE 테이블A.조인키컬럼 = 테이블 B. 조인키컬럼;
2. LEFT OUTER JOIN
Left outer join은 교집합 연산결과와 차집합 연산결과를 합친것과 같다.
조인키 컬럼값이 양쪽 테이블 데이터 집합에서 공통적으로 존재하는 데이터와 left outert join 키워드 왼쪽에 명시된 테이블에만 존재하는 데이터를 결과 데이터 집합으로 추출한다.
<사용법>
SELECT 컬럼명 [,컬럼명]
FROM 테이블A
LEFT OUTER JOIN 테이블B
ON 테이블A.조인키컬럼=테이블B.조인키컬럼;
또는
SELECT 컬럼명[,컬럼명]
FROM 테이블 A, 테이블B
WHERE 테이블A.조인키컬럼=테이블B.조인키컬럼(+)
여기서 보듯이 (+)표시는 레프트 조인에서는 오른쪽에 작성한다. (+)가 leftouterjoin키워드라고 보면 이해하기 쉬울듯하다
3. RIGHT OUTER JOIN
Right outer join은 교집합연산결과와 차집합 연산결과를 합친것과 같다. 즉 오른쪽의 결과를 다 나타내는것
다만 차집합의 기준이 Left outer join과 반대이다.
조인키 컬럼값이 양쪽 테이블 데이터 집합에서 공통적으로 존재하는데이터와 right outer join 키워드의 오른쪽에 명시된 테이블에만 존재하는 데이터를 결과 데이터 집합으로 추출한다.
<사용법>
SELECT 컬럼명 [,컬럼명]
FROM 테이블A
RIGHT OUTER JOIN 테이블B
ON 테이블A.조인키컬럼=테이블B.조인키컬럼;
또는
SELECT 컬럼명[,컬럼명]
FROM 테이블 A, 테이블B
WHERE 테이블A.조인키컬럼(+)=테이블B.조인키컬럼
<예시>
-- 사원 테이블에서 각 사원에 부서명을 아래 예제처럼 출력하세요?
-- (사원, 부서 테이블 조인 시 부서가 없는 사원도 출력)
-- ex) 정렬은 부서명(DNAME), 사원명(ENAME) 오름차순
select d.dname, e.empno, e.ename
from dept d, emp e
where d.deptno(+) = e.deptno;
여기서도 보듯이 나는 emp테이블에 갖고있는 null값을 포함한것들을 가져오고 싶다. 그렇다면 emp테이블 조인조건이 오른쪽에 기술되어 있기 때문에 right outer join을 걸어야한다. 만약 반대라면 반대로 left걸면된다. 이거 생각잘해야한다..
4. FULL OUTER JOIN
Full outer join은 합집합의 연산결과와 같다.
조인키 컬럼값이 양쪽 테이블 데이터 집합에서공통적으로 존재하는 데이터와 한쪽 테이블에만 존재하는 데이터 모두 결과데이터 집합으로 추출한다.
<사용법>
SELECT 컬럼명 [,컬럼명]
FROM 테이블A
FULL OUTER JOIN 테이블B
ON 테이블A.조인키컬럼=테이블B.조인키컬럼;
또는
SELECT 컬럼명[,컬럼명]
FROM 테이블 A, 테이블B
WHERE 테이블A.조인키컬럼(+)=테이블B.조인키컬럼(+)
left, right outer join을쓰는 이유는 null값이 표시되기 때문이다.
조인은 테이블들 관에 관계를 부여하고 데이터를 조작하게 한다.
조인은
1. 검색대상과 조건을 찾고( 검색은 select, 조건은 where절에 기술)
2. 검색할정보를 가진 테이블을 파악한다. (from절에 기술)
3. 테이블간의 관계를 확인 (fk를 찾기)
4. 조인조건 기술한다.(이부분을 고민잘해야하는것같다. 잘못하면 데이터가 우르르 쏟아진다..)
'DATA > SQL' 카테고리의 다른 글
오라클 기초2. (0) | 2022.03.22 |
---|---|
오라클 기초 1. 사용자 생성, 권한부여, 테이블 조회 연산자사용 (0) | 2022.03.11 |
오라클 연동 - 이클립스에서 ping failed 뜰때 확인 (0) | 2022.02.21 |