오라클 SQL 조인으로 테이블 업데이트하기 (emp와 dept 활용)

데이터베이스를 다루다 보면, 종종 여러 테이블을 조합해서 특정 데이터를 업데이트해야 하는 상황이 생기곤 해요.

오늘은 오라클의 empdept테이블을 조인하여 업데이트 하는 방법에 대해 안내해드리려고 해요! dept 테이블의 deptno 값에 따라 emp테이블의 comm 컬럼 값을 업데이트하는 방법으로 예제를 보여드릴게요. 😊

업데이트를 위한 SQL 예제

UPDATE 
    (SELECT e.comm,
            CASE d.deptno
                WHEN 20 THEN 1
                WHEN 30 THEN 2
                WHEN 40 THEN 3
                ELSE 4
            END AS upd
       FROM emp e
       INNER JOIN dept d
       ON e.deptno = d.deptno
       WHERE e.comm IS NULL) subquery
SET subquery.comm = subquery.upd;

쿼리 동작 설명~

  1. 조인(inner join)
    empdept 테이블을 deptno라는 공통 키를 기준으로 묶어요. 서로 연관된 데이터를 한 번에 처리할 수 있지요.
  2. 조건 필터링
    업데이트는 comm 컬럼이 비어있는(NULL) 직원 데이터에만 적용하겠습니다.
  3. CASE 문 활용
    deptno 값에 따라 업데이트할 값을 임의로 설정할게요.
    • 부서 번호가 20이면 comm은 1
    • 부서 번호가 30이면 comm은 2
    • 부서 번호가 40이면 comm은 3
    • 그 외에는 4로 설정됩니다.
  4. SET 구문
    위에서 정리된 값을 기반으로 emp 테이블의 comm 값을 업데이트합니다.

실행 결과는 어떻게 될까요?

이 쿼리를 실행하면, comm 컬럼이 비어 있는 직원들에 대해 다음과 같은 업데이트가 이루어져요

  • 부서 번호 20 → comm = 1
  • 부서 번호 30 → comm = 2
  • 부서 번호 40 → comm = 3
  • 그 외 부서 → comm = 4
SELECT * FROM EMP ORDER BY ENAME;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7876 ADAMS      CLERK           7788 87/07/13       1100          1         20
      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300         30
      7698 BLAKE      MANAGER         7839 81/05/01       2850          2         30
      7782 CLARK      MANAGER         7839 81/06/09       2450          4         10
      7902 FORD       ANALYST         7566 81/12/03       3000          1         20
      7900 JAMES      CLERK           7698 81/12/03        950          2         30
      7566 JONES      MANAGER         7839 81/04/02       2975          1         20
      7839 KING       PRESIDENT            81/11/17       5000          4         10
      7654 MARTIN     SALESMAN        7698 81/09/28       1250       1400         30
      7934 MILLER     CLERK           7782 82/01/23       1300          4         10
      7788 SCOTT      ANALYST         7566 87/07/13       3000          1         20     
      7369 SMITH      CLERK           7902 80/12/17        800          1         20
      7844 TURNER     SALESMAN        7698 81/09/08       1500          0         30
      7521 WARD       SALESMAN        7698 81/02/22       1250        500         30

14 개의 행이 선택되었습니다.

이렇게 하여 조인으로 테이블을 업데이트 하는 방법을 알아보았는데요, 🎉 필요한 부분을 응용해서 여러분의 데이터베이스 작업에도 활용해 보세요~ 😊

이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗