SQL) Oracle_SELECT_JOIN 절/ON 절/왼쪽/오른쪽 외부 조인


— (ON 절)

–; 가독성이 우수합니다
— (조인 조건을 명시적으로 표현)
–동등 조인과 비동등 조인을 모두 표현할 수 있음


–1) 각 직원의 업무 부서 검색
–동등 조인

SELECT dno,dname,eno,에네임
부서에서
조인 엠프 USING(dno);

SELECT 부서.dno, dname, eno, ename
부서에서
JOIN emp ON dept.dno=emp.dno;

SELECT d.dno, dname, eno, 에네임
D 부서에서
JOIN emp e ON d.dno=e.dno;


–2) 개발 직원의 급여 등급을 찾습니다.
–비 동등 조인

SELECT eno,ename,job,sal,grade
EM에서
Losal과 Hisal 사이에 salgrade 연결
WHERE 직업=’개발’
4 DESC로 주문하십시오.

SELECT eno,ename,job,sal,grade
EM에서
Losal과 Hisal 사이에 salgrade 연결
AND 직업=’개발’
4 DESC로 주문하십시오.

위와 같이 하시면 됩니다. 하지만
job=’development’와 같은 일반적인 조건은 아래와 같은 조인과 관련이 없습니다.
ON 절에는 쓰지 않는 것이 좋습니다.
일반 조건과 조인 조건의 기준이 모호해지기 때문이다.
그래서 위와 같이 non-equijoin은 ON 절에 있고 일반 조건은 WHERE 절에 있습니다.
기부는 가독성에 좋습니다.

— 3) 직원의 부서명 및 급여 수준 검색

– 규칙을 정하는 것이 좋다
–예를 들어, 동등 조인은 USING 절을 사용합니다.
–동등 조인이 아닌 경우 ON 절을 사용합니다.
–이 방법으로 규칙을 설정하면 나중에 가독성이 향상됩니다.

에노,에나메,dno,dname,sal,등급 선택
EM에서
JOIN 부서 USING(dno)
Losal과 Hisal 사이에 salgrade를 연결하십시오.

eno,ename,d.dno,dname,sal,grade 선택
E에서
JOIN 부서 d ON e.dno=d.dno
Losal과 Hisal 사이에 salgrade를 연결하십시오.

–4) 직원의 이름과 담당 관리자의 이름을 검색합니다.


— 자체 참조 조인: ON 절로 표현
–e1 : 직원 테이블
–e2 : 관리자 테이블

SELECT e.eno 직원 번호 , e.ename 직원 이름 ,m.eno “관리자 직원 번호”, m.ename 관리자 이름
E에서
JOIN emp m ON e.mgr=m.eno;

(왼쪽 오른쪽 완전 외부 조인)


; (+) 기호로 표시된 외부 조인은 둘 중 하나에서만 사용할 수 있습니다.
그러나 여기서는 양쪽에 (+)를 더한 것처럼 표현할 수 있다.
A. (+) : POS에 부서 구성원이 없을 때 POS 부서가 있음
abt.dno=emp.dno(+)
나. 부서 구성원이 없는 POS 부서의 존재
홍길동 신입사원 부임 전
이 경우 FULL JOIN을 사용해야 합니다.

5) 홍길동을 추가하자

INSERT INTO emp(eno,ename)
VALUES(‘3007’, ‘임꺽정’);

저지르다;

선택하다 *
EM에서
WHERE ename IN(‘홍길동’, ‘임꺽정’);

– 부서별 직원 검색

SELECT d.dno,dname,eno,에네임
E에서
JOIN 부서 d ON e.dno(+)=d.dno;


– 직원이 없는 부서까지 내보내기

e.dno,dname,eno,ename 선택
E에서
JOIN 부서 d ON e.dno=d.dno(+);

–직원의 부서 검색

–직원이 아직 부서에 할당되지 않은 직원을 반환합니다.

e.dno,dname,eno,ename 선택
E에서
FULL OUTER JOIN dept d ON e.dno=d.dno;

e.dno,dname,eno,ename 선택
E에서
FULL JOIN 부서 d ON e.dno=d.dno;

–직원이 없는 부서: POS
–부서 없는 직원: 홍길동
— 둘 다 쓰려면

–LEFT JOIN은 왼쪽 테이블의 모든 정보를 출력합니다.
–LEFT가 기본값입니다.

SELECT dno,dname,eno,에네임
EM에서
LEFT JOIN 부서 USING(dno);

SELECT dno,dname,eno,에네임
EM에서
RIGHT JOIN 부서 USING(dno);

–RIGHT JOIN은 오른쪽 테이블의 모든 정보를 출력합니다.
– 즉, 기준을 RIGHT 테이블과 일치시킵니다.

–6) 직원의 이름과 부서 찾기


–OUTER를 사용하거나 생략할 수 있습니다.
–완전 외부 조인
–왼쪽 외부 링크
–오른쪽 외부 조인

SELECT dno,dname,eno,에네임
EM에서
FULL JOIN 부서 USING(dno);