Oracle 네 가지 update 방법 요약

3650 단어 데이터 뱅 크
Oracle 네 가지 update 방법 요약
Oracle 은 표준 update 문 구 를 제공 하 는 것 외 에 다른 데이터 업데이트 방식 을 제공 하여 서로 다른 응용 장면 에 대응 합 니 다. - [Oacle 의 update 원리]
update_statement ::=
UPDATE {table_reference | [THE] (subquery1)} [alias]
 SET {
        column_name = {sql_expression | (subquery2)}
      | (column_name [, column_name]...) = (subquery3)} 
        [, {column_name = {sql_expression | (subquery2)}
      | (column_name [, column_name]...) = (subquery3)
     }]...
 [WHERE {search_condition | CURRENT_OF cursor_name}] [returning_clause]
  • 표준 업데이트
  • update join view
  • merge into
  • 커서 법
  • 표준 업데이트
    Update 문 구 는 표 의 데 이 터 를 수정 하 는 데 사 용 됩 니 다.W3school 의 문법: UPDATE 표 이름 SET 열 이름 = 새 값 WHERE 열 이름 = 어떤 값 입 니 다. -[ w3school]
    update join view
    update join view 는 먼저 두 장의 표를 연결 을 통 해 하나의 보 기 를 만 든 다음 에 보 기 를 업데이트 하여 원본 표를 업데이트 하 는 목적 을 달성 하 는 것 입 니 다.
    update (select bonus
              from employee_bonus b
             inner join employees e on b.employee_id = e.employee_id
             where e.bonus_eligible = 'N') t
       set t.bonus = 0

    위의 원리 에서 말 한 것 처럼 괄호 안에 있 는 것 은 하나의 보기 입 니 다. set 에 서 는 업데이트 가 필요 한 필드 입 니 다. 이 방법 은 직접적 이 고 효율 적 이지 만 제한 이 비교적 죽 습 니 다. 그 중의 employees 표 의 메 인 키 는 where 조건 에 나타 나 야 합 니 다. 그렇지 않 으 면 오류 가 발생 합 니 다. ORA - 01779: 키 가 아 닌 저장 표 와 대응 하 는 열 을 수정 할 수 없습니다.
    merge into
    merge into 는 Oracle 특유 의 문구 입 니 다.
    MERGE INTO table_name alias1
    USING (table | view | sub_query) alias2
    ON (join condition)
    WHEN MATCHED THEN
      UPDATE table_name SET col1 = col_val1, col2 = col2_val
    WHEN NOT MATCHED THEN
      INSERT (column_list) VALUES (column_values);

    이 원 리 는 alias 2 에서 선택 한 데이터 입 니 다. 각각 alias 1 과 ON (join condition) 을 비교 하고 일치 하면 업데이트 작업 (Update) 을 하고 일치 하지 않 으 면 삽입 작업 (Insert) 을 합 니 다.
    설명 으로 병합: 최적화 자 는 다음 조건 중 하나 가 사실 인 경우 대량의 데 이 터 를 결합 하기 위해 해시 조인 을 통 해 정렬 병합 조인 을 선택 할 수 있 습 니 다. 두 테이블 간 의 조인 조건 은 동일 한 조인 이 아 닙 니 다. 다른 작업 에 이미 필요 한 정렬 때문에 최적화 자 는 해시 조인 보다 정렬 병합 을 사용 하 는 것 이 더 저렴 하 다 는 것 을 알 게 됩 니 다.
    merge 를 사용 하면 정렬 을 해 야 합 니 다. 즉, 두 표 의 데 이 터 를 읽 고 일정한 순서에 따라 merge 를 진행 한 다 는 것 입 니 다. 이것 은 비용 이 있 습 니 다.merge 를 실행 하면 영향 을 주 는 줄 수 를 되 돌려 주지 않 습 니 다.Merge 문 구 는 쓰기 가 비교적 번 거 롭 고 최대 두 개의 표 만 연결 할 수 있 으 며 복잡 한 문 구 는 merge 업데이트 법 으로 힘 이 따 르 지 않 고 효율 이 떨어진다.
    유표 법
    커서 는 커서 와 빠 른 커서 를 표시 합 니 다.
    스피드 커서
    begin
    for cur in (table|subquery) loop
        update_statement
    end loop; 
    end;

    커서 보이 기
    SET SERVEROUTPUT ON  
    DECLARE  
      CURSOR emp_cursor IS   
      SELECT empno, ename FROM emp;  
    BEGIN  
    FOR Emp_record IN emp_cursor LOOP     
         update_statement;  
    END LOOP;  
    END; 

    커서 를 사용 하면 좋 은 점 이 많 습 니 다. for 순환 은 우리 에 게 대량의 데 이 터 를 업데이트 하 는 방법 을 제공 합 니 다. 게다가 Oacle 의 rowid 물리 필드 (Oacle 은 기본적으로 표 마다 rowid 필드 가 있 고 유일한 색인) 를 제공 합 니 다. 업데이트 할 기록 을 신속하게 찾 을 수 있 으 며 복잡 한 조회 문 구 를 지원 할 수 있 습 니 다.
    업데이트 방법:
    방법.
    장면
    표준 업데이트 문법
    단일 표 업데이트 나 간단 한 문 구 는 이 방안 을 사용 하 는 것 이 좋 습 니 다.
    update join view
    두 표 가 연결 되 어 있 고 업 데 이 트 된 표 가 관련 표 메 인 키 를 통 해 연 결 된 경우 이 방안 을 사용 하 는 것 이 좋 습 니 다.
    merge into
    두 표 가 연결 되 어 있 고 업 데 이 트 된 표 는 관련 표 의 메 인 키 를 통 해 연 결 된 것 이 아니 라 이 방안 을 사용 하 는 것 이 좋 습 니 다.
    유표
    다 중 표 관련 및 논리 복잡 한 경우 이 방안 을 사용 하 는 것 이 좋 습 니 다.
    보통 두 표 사이 의 업데이트 에 대해 데이터 업데이트 속 도 는 Update join view, merge into, 커서, 표준 Update 문 입 니 다.
    이 문 서 는 정리 하고 참고 하 는 것 이 약간 많 습 니 다. 여 기 는 더 이상 일일이 열거 하지 않 고 스스로 필기 하고 정리 하 며 본의 아니 게 무례 를 범 합 니 다.

    좋은 웹페이지 즐겨찾기