π TABLE JOIN : λ κ°μ΄μμ ν
μ΄λΈμ μ μ₯λ νμ μλ‘ κ²°ν©νμ¬ μνλ 컬λΌκ°μ κ²μνλ κΈ°λ₯
1) EMP ν
μ΄λΈμ μ μ₯λ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμλ²νΈ κ²μ
SELECT EMPNO,ENAME,SAL,DEPTNO FROM EMP;
2) DEPT ν
μ΄λΈμ μ μ₯λ λͺ¨λ λΆμμ λΆμλ²νΈ,λΆμμ΄λ¦,λΆμμμΉ κ²μ
SELECT DEPTNO,DNAME,LOC FROM DEPT;
SELECT DEPTNO,DNAME,LOC FROM DEPT;
--μμμ λ ν
μ΄λΈμ μλ μ 보λ€μ κ²μνκΈ° μν΄ SELECTλ₯Ό λ λ² μΌλλ°, μ΄λ₯Ό ν λ²μ λμ΄νκ³ FROM λ€μ λ ν
μ΄λΈ μ΄λ¦μ λͺ¨λ μ¨λ΄€λ€.
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--λ κ°μ΄μμ ν
μ΄λΈμ μ μ₯λ νμ κ²°ν©νμ¬ κ²μνκΈ° μν΄μλ λ°λμ λ κ°μ΄μμ ν
μ΄λΈμ νμ κ²°ν©νκΈ° μν 쑰건μ μ 곡νμ¬ κ²μ μ²λ¦¬
--μΉ΄λ€μμ νλ‘λνΈ(CATSIAN PRODUCT) : λ κ°μ΄μμ ν
μ΄λΈμ νμ κ²°ν©μ‘°κ±΄ μμ΄ κ²μν κ²½μ° λ°μλλ κ²°κ³Όλ‘ ν
μ΄λΈμ λͺ¨λ νμ κ΅μ°¨ κ²°ν©νμ¬ κ²μ κ²°κ³Ό μ 곡
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP,DEPT;
μ΄λ κ² κ²μν κ²½μ°, μλμ κ°μ΄ μ 체μ¬μλ€(14λͺ )μ΄ λΆμλ³λ‘ ꡬλΆλμ΄ μ¬λ¬λ² κ²μλλ€.
νμ§λ§ μ°λ¦¬κ° μνλ건 μ΄κ² μλλΌ κ° μ¬μλ€κ³Ό κ·Έ μ¬μλ€μ΄ μν΄μλ λΆμλ§ κ²μνκ³ μΆλ€.
μ΄ λ, EQUI JOIN μ μ¬μ©ν΄λ³΄μλ€.
π λλ±κ²°ν©(EQUI JOIN) : λ κ°μ΄μμ ν
μ΄λΈμ νμ κ²°ν©νκΈ° μν 쑰건μ = μ°μ°μλ₯Ό μ¬μ©νμ¬ μ‘°κ±΄μ΄ μ°Έ(TRUE)μΈ νλ§ κ²°ν©νμ¬ κ²μνλ©° κ²°ν©μ‘°κ±΄μ΄ λ§μ§ μλ ν
μ΄λΈμ νμ κ²°ν©λμ§ μκΈ° λλ¬Έμ λ―Έκ²μ μ²λ¦¬
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
--κ²°ν©μ‘°κ±΄μ WHEREμ 쑰건μμΌλ‘ νννμ¬ μ¬μ©
--νμ κ²°ν©νκΈ° μν ν
μ΄λΈμ κ°μ μ΄λ¦μ 컬λΌμ΄ μ‘΄μ¬νλ κ²½μ° [ν
μ΄λΈλͺ
.컬λΌλͺ
] νμμΌλ‘ νννμ¬ μ¬μ©
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;
EQUI JOIN μ μΌλλ EMP Tableκ³Ό DEPT Tableμ μλ λΆμλ²νΈλ₯Ό λ§€μΉλμ΄
μ¬μ μ΄λ¦κ³Ό κ·Έ μ¬μμ΄ μν΄μλ λΆμμ μ΄λ¦&μμΉκ° κ²μλμλ€.
κ·Έλμ μ΄ 14νμΌλ‘ κΉλνκ² κ²μλ¨.
νμ§λ§ κ°μ¬λμ΄ μ΄ λ°©λ²μ μλκ° μ€λ 걸리λ―λ‘ μΆμ²νμ§ μλλ€κ³ νμ¬.
μλμμ λ°°μ°λ JOINν¨μλ₯Ό μ¬μ© νλΌκ³ νμ ¨λ€.
πΆμ°Έκ³ πΆ
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμλ²νΈ,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
SELECT EMPNO,ENAME,SAL,EMP.DEPTNO,DNAME,LOC FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;
SELECT EMPNO,ENAME,SAL,DEPT.DEPTNO,DNAME,LOC FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;
--κ²μλμμ κ°μ 컬λΌλͺ
μ΄ μ‘΄μ¬ν κ²½μ° μ²«λ²μ§Έλ₯Ό μ μΈν λλ¨Έμ§ μ»¬λΌλͺ
μ μλμΌλ‘ λ³κ²½λμ΄ κ²μ
SELECT EMPNO,ENAME,SAL,EMP.DEPTNO,DEPT.DEPTNO,DNAME,LOC
FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;
--κ²μλμμ κ°μ 컬λΌλͺ
μ΄ μ‘΄μ¬ν κ²½μ° μ»¬λΌ λ³μΉμ μ¬μ©νμ¬ κ²μνλ κ²μ κΆμ₯
SELECT EMPNO,ENAME,SAL,EMP.DEPTNO EMP_DEPTNO,DEPT.DEPTNO DEPT_DEPTNO,DNAME,LOC
FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;
πΆμ°Έκ³ πΆ
TABLE ALIAS : ν
μ΄λΈλͺ
λμ μ¬μ©ν μ μλ λ³μΉμ μ 곡νλ κΈ°λ₯ - ν
μ΄λΈμ μ΄λ¦μ μΌμμ μΌλ‘ λ³κ²½ μ²λ¦¬νμ¬ μ¬μ©
--νμ) SELECT κ²μλμ,... FROM ν
μ΄λΈλͺ
λ³μΉ,ν
μ΄λΈλͺ
λ³μΉ,...
--ν
μ΄λΈμ νμ κ²°ν©ν λ ν
μ΄λΈμ μ΄λ¦μ κ°νΈνμ¬ νννκ±°λ νλμ ν
μ΄λΈμ λ€μμ ν
μ΄λΈλ‘ νννκΈ° μν μ¬μ©
SELECT EMPNO,ENAME,SAL,E.DEPTNO EMP_DEPTNO,D.DEPTNO DEPT_DEPTNO,DNAME,LOC
FROM EMP E,DEPT D
WHERE E.DEPTNO=D.DEPTNO;
--ν
μ΄λΈμ λ³μΉμ μ€μ ν ν λ³μΉ λμ μ€μ ν
μ΄λΈλͺ
μ μ¬μ©νλ©΄ μλ¬ λ°μ
SELECT EMPNO,ENAME,SAL,EMP.DEPTNO EMP_DEPTNO,DEPT.DEPTNO DEPT_DEPTNO,DNAME,LOC
FROM EMP E,DEPT D
WHERE E.DEPTNO=D.DEPTNO;
π λΉλλ±κ²°ν©(NON-EQUI JOIN) : λ κ°μ΄μμ ν
μ΄λΈμ νμ κ²°ν©νκΈ° μν 쑰건μ = μ°μ°μμΈμ λ€λ₯Έ μ°μ°μλ₯Ό μ¬μ©νμ¬ μ‘°κ±΄μ΄ μ°Έ(TRUE)μΈ νλ§ κ²°ν©νμ¬ κ²μνλ©° κ²°ν©μ‘°κ±΄μ΄ λ§μ§ μλ ν
μ΄λΈμ νμ κ²°ν©λμ§ μκΈ° λλ¬Έμ λ―Έκ²μ μ²λ¦¬
--EMP ν
μ΄λΈμ μ μ₯λ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬ κ²μ
SELECT EMPNO,ENAME,SAL FROM EMP;
--SALGRADE ν
μ΄λΈμ μ μ₯λ λͺ¨λ κΈμ¬λ±κΈμ λ±κΈλ²νΈ,μ΅μκΈμ¬,μ΅λκΈμ¬ κ²μ
SELECT GRADE,LOSAL,HISAL FROM SALGRADE;
--EMP ν
μ΄λΈκ³Ό SALGRADE ν
μ΄λΈμ μ μ₯λ λͺ¨λ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λ±κΈλ²νΈ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ SAL 컬λΌκ°μ΄ SALGRADE ν
μ΄λΈμ LOSAL 컬λΌκ°λΆν° HISAL 컬λΌκ° λ²μμ ν¬ν¨λλ νλ§ κ²°ν©
SELECT EMPNO,ENAME,SAL,GRADE FROM EMP,SALGRADE WHERE SAL>=LOSAL AND SAL<=HISAL;
SELECT EMPNO,ENAME,SAL,GRADE FROM EMP,SALGRADE WHERE SAL BETWEEN LOSAL AND HISAL;
π μΈλΆκ²°ν©(OUTER JOIN) : λ κ°μ΄μμ ν
μ΄λΈμμ κ²°ν©μ‘°κ±΄μ λ§λ νμ κ²°ν©νμ¬ κ²μνκ³ κ²°ν©μ‘°κ±΄μ΄ λ§μ§ μμ νμ NULLκ³Ό κ²°ν©νμ¬ κ²μ
--κ²°ν© μ‘°κ±΄μμ ν
μ΄λΈμ (+) κΈ°νΈλ₯Ό μ¬μ©νλ©΄ κ²°ν©μ‘°κ±΄μ΄ λ§μ§ μμ νμ NULLκ³Ό κ²°ν©νμ¬ κ²μ
--EMP ν
μ΄λΈμ μ μ₯λ λͺ¨λ μ¬μμ λΆμλ²νΈλ₯Ό μ€λ³΅λμ§ μλ μ μΌν νλμ κ°λ§ κ²μ
SELECT DISTINCT DEPTNO FROM EMP;--κ²μκ²°κ³Ό : 10,20,30
--DEPT ν
μ΄λΈμ μ μ₯λ λͺ¨λ λΆμμ λΆμλ²νΈ,λΆμμ΄λ¦,λΆμμμΉ κ²μ
SELECT DEPTNO,DNAME,LOC FROM DEPT;--κ²μκ²°κ³Ό : 10,20,30,40
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
--40λ² λΆμμ 근무νλ μ¬μμ μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ 40λ² λΆμμ λν λΆμμ΄λ¦κ³Ό λΆμμμΉ λ―Έκ²μ
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;
--μ¬μμ΄ μ‘΄μ¬νμ§ μλ λΆμμ 보λ κ²μνκΈ° μν΄ κ²°ν© μ‘°κ±΄μμμ EMP ν
μ΄λΈμ (+) κΈ°νΈλ₯Ό λΆμ¬ μΈλΆκ²°ν©μΌλ‘ κ²μ
--40λ² λΆμμ 근무νλ μ¬μμ΄ μλ κ²½μ° EMP ν
μ΄λΈμ κ²°ν©λ νμ΄ μμΌλ―λ‘ μ¬μμ 보μ 컬λΌκ° λμ NULLκ³Ό κ²°ν©λμ΄ κ²μ
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP,DEPT WHERE EMP.DEPTNO(+)=DEPT.DEPTNO;
π μκΈ°κ²°ν©(SELF JOIN) : νλμ ν
μ΄λΈμ μλ‘ λ€λ₯Έ λ³μΉμ λΆμ¬νμ¬ 2κ° μ΄μμ ν
μ΄λΈλ‘ ꡬλΆνμ¬ νμ κ²°ν©ν΄ κ²μ
--κ²°ν©λλ λ ν
μ΄λΈμ 컬λΌλͺ
μ΄ λμΌνλ―λ‘ ν
μ΄λΈμ λ³μΉμ μ¬μ©νμ¬ λͺ
ννκ² ν
μ΄λΈμ ꡬλΆνμ¬ μ»¬λΌλͺ
μ€μ
--EMP ν
μ΄λΈμ μ μ₯λ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κ΄λ¦¬μλ²νΈ(κ΄λ¦¬μμ μ¬μλ²νΈ) κ²μ
SELECT EMPNO,ENAME,MGR FROM EMP;
--EMP ν
μ΄λΈμ μ μ₯λ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κ΄λ¦¬μλ²νΈ(κ΄λ¦¬μμ μ¬μλ²νΈ),κ΄λ¦¬μμ΄λ¦(κ΄λ¦¬μμ μ¬μμ΄λ¦) κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈ(WORKER)μ MGR 컬λΌκ°κ³Ό EMP ν
μ΄λΈ(MANAGER)μ EMPNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©νμ¬ κ²μ
--EMP ν
μ΄λΈ(WORKER)μ MGR 컬λΌκ°μ΄ NULLμΈ μ¬μμ κ²°ν©μ‘°κ±΄μ΄ λ§μ§ μμ λ―Έκ²μ
SELECT WORKER.EMPNO,WORKER.ENAME WORKER_ENAME,WORKER.MGR,MANAGER.ENAME MANAGER_ENAME
FROM EMP WORKER, EMP MANAGER WHERE WORKER.MGR=MANAGER.EMPNO;
--EMP ν
μ΄λΈ(WORKER)μ MGR 컬λΌκ°μ΄ NULLμΈ μ¬μλ κ²μλλλ‘ μΈλΆκ²°ν© μ¬μ©
SELECT WORKER.EMPNO,WORKER.ENAME WORKER_ENAME,WORKER.MGR,MANAGER.ENAME MANAGER_ENAME
FROM EMP WORKER, EMP MANAGER WHERE WORKER.MGR=MANAGER.EMPNO(+);
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ SALES λΆμμ 근무νλ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
SELECT EMPNO,ENAME,SAL,DNAME,LOC
FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO AND DNAME='SALES';
--μμμ λ°°μ΄ κ²κ³Ό κ°μ΄ κ²°ν©μ‘°κ±΄κ³Ό ν쑰건μ WHEREμμ κ°μ΄ μ¬μ©νλ―λ‘ μ μ§λ³΄μμ λΆνΈν¨ μ‘΄μ¬
--1999λ
μ λ§λ€μ΄μ§ νμ€ SQL(ANSI-SQL)μμλ ν
μ΄λΈμ νμ κ²°ν©νμ¬ κ²μνκΈ° μν κΈ°λ₯ μ 곡
=>μ¦, μ΄ λ JOINμ΄λΌλ ν¨μλ₯Ό λ§λ€μ΄μ£Όμλ€.
π CROSS JOIN : κ²°ν© ν
μ΄λΈμ λͺ¨λ νμ κ΅μ°¨ κ²°ν©νμ¬ κ²μ - κ²°ν©μ‘°κ±΄ μλ΅
--νμ) SELECT κ²μλμ,... FROM ν
μ΄λΈλͺ
1 CROSS JOIN ν
μ΄λΈλͺ
2
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP CROSS JOIN DEPT;
π NATURAL JOIN : κ²°ν© ν
μ΄λΈμ κ°μ μ΄λ¦μ 컬λΌμ΄ νλλ§ μλ κ²½μ° κ°μ μ΄λ¦μ 컬λΌμ μ μ₯λ κ°μ΄ κ°μ νλ§ κ²°ν©νμ¬ κ²μ - κ²°ν©μ‘°κ±΄ μλ΅
--νμ) SELECT κ²μλμ,... FROM ν
μ΄λΈλͺ
1 NATURAL JOIN ν
μ΄λΈλͺ
2
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
--NATURAL JOIN κΈ°λ₯μ μ¬μ©νλ©΄ EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ μ¬μ©ν΄ μλμΌλ‘ κ²°ν©λλ―λ‘ κ²°ν©μ‘°κ±΄ μλ΅
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP NATURAL JOIN DEPT;
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμλ²νΈ,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--NATURAL JOIN κΈ°λ₯μ μ¬μ©νλ©΄ κ²°ν© ν
μ΄λΈμ κ°μ μ΄λ¦μ 컬λΌμ κ²μν λ ν
μ΄λΈμ λͺ
νν ꡬλΆνμ§ μμλ κ²μ κ°λ₯
SELECT EMPNO,ENAME,SAL,DEPTNO,DNAME,LOC FROM EMP NATURAL JOIN DEPT;
π JOIN USING : κ²°ν© ν
μ΄λΈμ κ°μ μ΄λ¦μ 컬λΌμ΄ 2κ° μ΄μ μλ κ²½μ°, κ°μ μ΄λ¦μ μ»¬λΌ μ€ νλλ₯Ό μ§μ νμ¬ μ§μ λ 컬λΌμ μ μ₯λ κ°μ΄ κ°μ νλ§ κ²°ν©νμ¬ κ²μ - κ²°ν©μ‘°κ±΄ μλ΅
--νμ) SELECT κ²μλμ,... FROM ν
μ΄λΈλͺ
1 JOIN ν
μ΄λΈλͺ
2 USING(컬λΌλͺ
)
SELECT EMPNO,ENAME,SAL,DEPTNO,DNAME,LOC FROM EMP JOIN DEPT USING(DEPTNO);
μλ INNER JOIN λλ OUTER JOINμ λ§μ΄ μ΄λ€.
π INNER JOIN : κ²°ν©μ‘°κ±΄μ μ 곡λ°μ κ²°ν©μ‘°κ±΄μ΄ μ°Έ(TRUE)μΈ νλ§ κ²°ν©νμ¬ κ²μ - INNER ν€μλ μλ΅ κ°λ₯
--νμ) SELECT κ²μλμ,... FROM ν
μ΄λΈλͺ
1 INNER JOIN ν
μ΄λΈλͺ
2 ON κ²°ν©μ‘°κ±΄μ
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP INNER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμλ²νΈ,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
--κ²°ν© ν
μ΄λΈμ κ°μ μ΄λ¦μ 컬λΌμ΄ μλ κ²½μ° λ°λμ ν
μ΄λΈμ λͺ
μνμ¬ μ»¬λΌμ νννμ¬ μ¬μ©
SELECT EMPNO,ENAME,SAL,EMP.DEPTNO,DNAME,LOC FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT EMPNO,ENAME,SAL,DEPT.DEPTNO,DNAME,LOC FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
--EMP ν
μ΄λΈκ³Ό SALGRADE ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λ±κΈλ²νΈ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ SAL 컬λΌκ°μ΄ SALGRADE ν
μ΄λΈμ LOSAL 컬λΌκ°λΆν° HISAL 컬λΌκ° λ²μμ ν¬ν¨λλ νλ§ κ²°ν©
SELECT EMPNO,ENAME,SAL,GRADE FROM EMP JOIN SALGRADE ON SAL BETWEEN LOSAL AND HISAL;
2κ°μ ν
μ΄λΈ μ‘°μΈ
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ SALES λΆμμ 근무νλ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO WHERE DNAME='SALES';
SELECT EMPNO,ENAME,SAL,DNAME,LOC
FROM EMP
JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO
WHERE DNAME='SALES';
3κ°μ ν
μ΄λΈ μ‘°μΈ
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈ, SALGRADE ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ,λ±κΈλ²νΈ κ²μ
--κ²°ν©μ‘°κ±΄-1 : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
--κ²°ν©μ‘°κ±΄-2 : EMP ν
μ΄λΈμ SAL 컬λΌκ°μ΄ SALGRADE ν
μ΄λΈμ LOSAL 컬λΌκ°λΆν° HISAL 컬λΌκ° λ²μμ ν¬ν¨λλ νλ§ κ²°ν©
SELECT EMPNO,ENAME,SAL,DNAME,LOC,GRADE
FROM EMP
JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO
JOIN SALGRADE ON SAL BETWEEN LOSAL AND HISAL;
π OUTER JOIN : κ²°ν©μ‘°κ±΄μ΄ λ§λ νλ§ κ²°ν©νμ¬ κ²μνλ κ²μ΄ μλλΌ κ²°ν©μ‘°κ±΄μ΄ λ§μ§ μλ νμ NULLκ³Ό κ²°ν©νμ¬ κ²μ - OUTER ν€μλλ μλ΅ κ°λ₯
--νμ) SELECT κ²μλμ,... FROM ν
μ΄λΈλͺ
1 {LEFT|RIGHT|FULL} OUTER JOIN ν
μ΄λΈλͺ
2 ON κ²°ν©μ‘°κ±΄
--LEFT OUTER JOIN : JOIN ν€μλλ₯Ό κΈ°μ€μΌλ‘ μΌμͺ½μ μμΉν ν
μ΄λΈμ λͺ¨λ νμ κ²μ μ²λ¦¬
--RIGHT OUTER JOIN : JOIN ν€μλλ₯Ό κΈ°μ€μΌλ‘ μ€λ₯Έμͺ½μ μμΉν ν
μ΄λΈμ λͺ¨λ νμ κ²μ μ²λ¦¬
--FULL OUTER JOIN : JOIN ν€μλλ₯Ό κΈ°μ€μΌλ‘ μΌμͺ½κ³Ό μ€λ₯Έμͺ½μ μμΉν ν
μ΄λΈμ λͺ¨λ νμ κ²μ μ²λ¦¬
--EMP ν
μ΄λΈκ³Ό DEPT ν
μ΄λΈμμ λͺ¨λ μ¬μμ μ¬μλ²νΈ,μ¬μμ΄λ¦,κΈμ¬,λΆμμ΄λ¦,λΆμμμΉ κ²μ
--κ²°ν©μ‘°κ±΄ : EMP ν
μ΄λΈμ DEPTNO 컬λΌκ°κ³Ό DEPT ν
μ΄λΈμ DEPTNO 컬λΌκ°μ΄ κ°μ νλ§ κ²°ν©
--40λ² λΆμμ 근무νλ μ¬μμ΄ μμΌλ―λ‘ 40λ² λΆμμ 보 λ―Έκ²μ
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
--OUTER JOIN κΈ°λ₯μ μ¬μ©νμ¬ κ²μ - 40λ² λΆμμ 근무νλ μ¬μμ΄ μμ΄λ μ¬μμ 보 λμ NULLκ³Ό κ²°ν©νμ¬ κ²μ
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP LEFT JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;--μ€νμ€λ₯
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP RIGHT JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP FULL JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
'Database > Oracle' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[SQL-Oracle]μλΈμΏΌλ¦¬(Subquery) (0) | 2023.11.30 |
---|---|
[SQL-Oracle]JOINν¨μ μ€μ΅ μμ π©βπ» (1) | 2023.11.30 |
[SQL-Oracle]λ¨μΌν¨μ&κ·Έλ£Ήν¨μ μ€μ΅ μμ π©βπ» (1) | 2023.11.30 |
[SQL-Oracle]ν¨μ(Function) - κ·Έλ£Ήν¨μ β μ€μβ - count, max, min, sum, avg, group by, having (2) | 2023.11.30 |
[SQL-Oracle]ν¨μ(Function) - μΌλ°ν¨μ -NVL, DECODE (2) | 2023.11.30 |