#MERGE, 패키지

김유미·2021년 12월 22일
0

프롤로그

수업내용과는 별도로 데이터베이스 MERGE와 패키지에 대해 과제를 내주셔서 조사 및 정리 해보도록 하겠습니다.

MERGE

  • 여러 테이블의 데이터들을 합치는 병합할 때 사용하는 명령어

<문법>

1-MERGE INTO 테이블명(A)
2-USING 테이블명(B)
3-ON (병합조건)
4-WHEN MACHED THEN
5-UPDATE SET 업데이트 내용
(or DELETE WHERE 조건)
6-WHEN NOT MATCHED THEN
7-INSERT VALUES(컬럼명)
;

  • A테이블과 B테이블의 내용을 합쳐서 A테이블에 모으는 명령어
  • 기준은 3번 라인의 ON조건이 만족하면, A테이블의 내용은 B테이블의 내용으로 UPDATE or DELETE문이 수행
  • ON조건이 만족하지않으면, B테이블의 내용이 A테이블로 신규 INSERT됩니다.
  • 무언가 원하는 조건이 있을 경우 B테이블의 정보를 A테이블에 수정하고, 없으면 신규로 데이터 넣을 때 사용

<예제>

  1. MERGE INTO copy_emp c
    USING employees e
    ON (c.employee_id = 200911)
    WHEN MATCHED THEN
    UPDATE SET
    c.first_name = e.first_name,
    c.last_name = e.last_name,
    c.email = e.email
    WHEN NOT MATCHED THEN
    INSERT (c.employee_id, c.first_name, c.last_name)
    VALUES(e.employee_id, e.first_name, e.last_name);
                      
  2. MERGE INTO emp
    USING DUAL
    ON (employee_id = 200911)
    WHEN MATCHED THEN
    UPDATE SET
    first_name = 'John',
    last_name = 'Petrucci',
    email = 'dream@johnpetrucci.com'
    WHEN NOT MATCHED THEN
    INSERT (first_name, last_name, email, ...... )
    VALUES ('John', 'Petrucci', 'dream@johnpetrucci.com');

패키지 (PACKAGE)

  • 패키지는 업무나 기능면에서 연관성이 높은 프로시저, 함수 등 여러 개의 PL/SQL 서브 프로그램을 하나의 논리그룹으로 묶어 통합, 관리하는 데 사용하는 객체
  • 오라클에서 패키지는 오라클 데이터베이스에 저장되어 있는 서로 관련있는 PL/SQL 프로지져와 함수들의 집합
  • 한 패키지 안에 프로시저와 함수를 넣어놓고 필요할 때 패키지 내에 있는 프로시저와 함수를 뽑아 사용하는 식
  • 선언부(스펙)과 본문(바디)로 구성

<패키지 장점>

  1. 모듈성
    -- 서브프로그램을 포함한 여러 PL/SQL 구성요소를 모듈화하여 PL/SQL로 제작한 프로그램의 사용 및 관리에 도움
    -- 모듈성: 잘 묶어 둔다는 의미로 프로그램의 이해를 쉽게하고 패키지 사이의 상호작용을 더 간편하고 명료하게 하는 역할

  2. 프로그램 설계의 용이성
    -- 패키지에 포함할 서브프로그램은 완벽히 완성되지 않아도 정의가 가능

  3. 정보 은닉
    -- 패키지 선언부는 외부에 공개되지만 패키지에 속한 커서, 함수, 프로시저의 세부 구현내용이 담겨있는 본문은 외부에서 볼 수 없다.
    -- 정보 은닉 기능이 지원되는 것이며, 외부 모듈에 영향을 주지 않고도 패키지 본문 내용은 언제든지 수정할 수 있다.

  4. 보다 나은 성능
    -- 패키지를 사용할 때 패키지에 포함한 모든 서브프로그램이 메모리에 한번에 로딩되는데 메모리에 로딩된 후의 호출은 디스크 I/O를 일으키지 않으므로 성능이 향상된다.

<패키지 구조>

  • 패키지 선언절
  • 패키지 본문

0개의 댓글

관련 채용 정보