17/12/5 다중 테이블 연결

2282 단어

17/12/5 다중 테이블 연결


join on 문
select * from emp
join dept on emp.deptno = dept.deptno

1. on은 연결 조건과 다른 검색 조건을 분리하고 다른 검색 조건은 WHERE 문장에 쓴다.2. 코드의 가독성을 높인다.
외부 연결
- 오른쪽 외부 연결: 오른쪽 테이블을 위주로 하고 오른쪽 테이블의 내용을 모두 보존합니다.
select emp.ename, dept.deptno
from emp right join dept on emp.deptno = dept.deptno

- 왼쪽 바깥쪽 연결은 동일합니다.
- 전체 외부 연결(full join): 좌우 두 개의 시계가 위주이고 두 시계의 내용이 모두 표시됩니다.
자체 연결
열: 모든 직원의 상급자를 조회한다.
select worker.ename|'    '| manager.ename
from emp worker
join emp manager on woker.mgr = manager.empno

확장: 다중 테이블 연결은 두 개의 테이블 또는 여러 개의 테이블 사이에서 할 수 있습니다.
연습: 1.ON 자구를 사용하여 CHICAGO에서 일하는 직원의 이름, 부서명, 근무지를 표시합니다.
SELECT EMP.ENAME, DEPT.DNAME, DEPT.LOC, SALGRADE.GRADE
FROM EMP
join DEPT on EMP.DEPTNO = DEPT.DEPTNO
join SALGRADE on EMP.sal BETWEEN losal AND hisal
WHERE DEPT.LOC in ('CHICAGO')

2. 왼쪽 연결을 사용하여 각 직원의 이름, 매니저의 이름을 조회하고 매니저가 없는 KING도 표시한다.
select woker.ename, manager.ename  
from emp woker
left join emp manager on woker.mgr = manager.empno

3. 오른쪽 연결을 사용하여 각 직원의 이름, 매니저의 이름을 조회하고 매니저가 없는 KING도 표시한다.이치에 맞다직원 SMITH의 이름, 부서 이름, 직접 상위 이름을 표시합니다.
SELECT WOKER.ename, DEPT.DNAME, manager.ename
FROM emp woker
join dept ON woker.deptno = dept.deptno 
join emp manager ON woker.mgr = manager.empno
WHERE woker.ename in ('SMITH')

5. 직원 이름, 부서 이름, 임금, 임금 등급을 표시하고 임금 등급이 4보다 크도록 요구한다.
SELECT EMP.ENAME, DEPT.DNAME, EMP.SAL, SALGRADE.GRADE
FROM EMP 
join SALGRADE ON EMP.SAL BETWEEN LOSAL and HISAL
join DEPT ON DEPT.deptno = EMP.deptno
WHERE SALGRADE.GRADE > 4

6. 직원 KING과 FORD가 관리하는 직원 이름 및 관리자 이름을 표시합니다.
SELECT emp.ENAME, MANAGER.ENAME, woker.ename
FROM EMP
LEFT JOIN EMP manager ON MANAGER.empno = EMP.mgr
LEFT JOIN EMP woker ON woker.mgr = EMP.empno 
WHERE EMP.ENAME in ('KING', 'FORD')

7. 직원의 이름, 참가 근무 시간, 사장 이름, 참가 근무 시간, 참가 근무 시간이 사장보다 이르도록 요구한다.
select woker.ename, woker.hiredate, manager.ename, manager.hiredate
from emp woker 
join emp manager on woker.mgr = manager.empno
where woker.hiredate < manager.hiredate

좋은 웹페이지 즐겨찾기