1. 오라클 함수 - 형변환함수
2. 오라클 함수 - NULL 처리 함수
3. 문제 풀이
4. 다중행 함수(SUM, COUNT, MAX, MIN, AVG)
5. GROUP BY절
6. ROLLUP, CUBE
7. JOIN
여러 테이블을 하나의 테이블처럼 사용하는 조인
1. 🔍 FROM절에 여러 테이블 선언하기
SELECT *
FROM EMP, DEPT
ORDER BY EMPNO;
☑️ DEPT 테이블 (4행) X EMP 테이블 (14행) = 56행 : 데카르트의 곱(Cartesian Product)
데카르트 곱은 두 집합으로부터 각각 원소를 하나씩 고른 순서쌍으로 이루어진 집합을 만들어주는 연산
2. 🔍 등가조인
SELECT *
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
ORDER BY EMPNO;
❔ FROM EMP E, DEPT D
"EMP"테이블을 "E"로 "DEPT"테이블을 "D"로 별칭
❔ WHERE E.DEPTNO = D.DEPTNO
등가조인 "E"테이블의 "DEPTNO" 칼럼과 "D"테이블의 "DEPTNO"칼럼이 같은 것끼리 연결
☑️ "EMP"테이블의 "DEPTNO" 칼럼과 "DEPT"테이블의 "DEPTNO_1"칼럼이 기본키와 외래키가 되어 연결된다.
☑️ 테이블의 모든 열을 출력할지라도 "*"를 사용하지 않고 출력할 열을 하나하나 입력해 줌 (WHY? 어떤 열이 어떤 순서로 출력될지 명확히 알 수 없음 OR 특정 열이 새로 생기거나 삭제되거나 수정되었을 때 변화의 감지 및 수정이 어려울 수 있음)
3. 🔍 WHERE절에 추가로 조건식 넣어 출력하기
SELECT E.ENAME, E.JOB, E.DEPTNO, D.LOC, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND E.SAL > 2000
ORDER BY EMPNO;
❔ WHERE E.DEPTNO = D.DEPTNO AND E.SAL > 2000
"AND" 연산자로 추가로 조건식을 넣어준다
3. 🔍 급여가 2500 이하이고 사원 번호가 9999 이하인 사원의 정보 출력하기
SELECT *
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND E.SAL <= 2500
AND E.EMPNO <= 9999;
1. 🔍 급여 범위를 지정하는 조건식으로 조인
SELECT *
FROM EMP E, SALGRADE S
WHRER E.SAL BETWEEN S.LOSAL AND S.HISAL;
하나의 테이블을 여러 개의 테이블처럼 활용하여 조인하는 방식
🔍 2. 자체조인 사용해보기
SELECT E1.EMPNO, E1.ENAME,E1.MGR, E2.ENAME AS MGR_NAME, E2.EMPNO AS MGR_EMPNO
FROM EMP E1, EMP E2
WHERE E1.MGR=E2.EMPNO;
☑️ "매니저가 있는" 사원들의 매니저 이름과 매니저의 사원번호가 출력됨
☑️ KING의 매니저 값은 NULL이므로 출력되지 않음
SELECT E2.*
FROM EMP E1, EMP E2
WHERE E1.MGR=E2.EMPNO;
☑️ E2의 테이블에는 매니저들의 정보만 들어있다. (관리하는 아래 직원이 있는!!)
☑️ 총 13개의 행 ( KING의 매니저값은 NULL이다. ) / 매니저는 총 6명 (사원은 총 14명 : EMP테이블의 사원은 총 14명이고 KING의 매니저값이 NULL이다. )
한 쪽 열의 데이터값이 null이더라도 강제로 출력하는 방식
왼쪽 외부 조인(Left Outer Jon) : WHERE TABLE1.COL1 = TABLE2.COL1(+)
오른쪽 외부 조인(Right Outer Join) : WHERE TABLE1.COL1(+) = TABLE2.COL1(+)
🔍3. 왼쪽 외부 조인 (위 자체조인의 쿼리 이용)
SELECT E1.EMPNO, E1.ENAME,E1.MGR, E2.ENAME AS MGR_NAME, E2.EMPNO AS MGR_EMPNO
FROM EMP E1, EMP E2
WHERE E1.MGR=E2.EMPNO(+);
☑️ 왼쪽테이블. 즉 E1의 테이블의 KING의 MGR값이 NULL임에도 결과가 출력됐다.
🔍4. 오른쪽 외부 조인 (위 자체조인의 쿼리 이용)
SELECT E1.EMPNO, E1.ENAME,E1.MGR, E2.ENAME AS MGR_NAME, E2.EMPNO AS MGR_EMPNO
FROM EMP E1, EMP E2
WHERE E1.MGR(+)=E2.EMPNO
ORDER BY E1.MGR ASC;