Creative Saplings

UPDATE (한국어)

1월 29, 2021
No Comments

목적

UPDATE 문을 사용하여 테이블 또는 뷰의 기본 테이블에서 기존 값을 변경하거나 구체화 된 뷰의 마스터 테이블

추가 주제

  • 전제 조건

  • 구문

  • 의미

  • 예

전제 조건

테이블의 값을 업데이트하려면 테이블이 자체 스키마에 있거나 테이블에 대한 UPDATE 객체 권한이 있어야합니다.

업데이트하려면 뷰의 기본 테이블에있는 값 :

  • 뷰에 대한 UPDATE 객체 권한이 있어야합니다.

  • 뷰가 포함 된 스키마를 소유 한 사람은 기본 테이블에 대한 UPDATE 개체 권한이 있어야합니다.

UPDATE ANY TABLE 시스템 권한을 통해 모든 테이블 또는 기본 테이블

다음과 같은 경우 업데이트 할 개체에 대한 SELECT 개체 권한도 있어야합니다.

  • 객체가 원격 데이터베이스에 있거나

  • SQL92_SECURITY 초기화 매개 변수가 TRUE 및 UPDATE 연산은 where_clause의 열과 같은 테이블 열을 참조합니다.

구문

update :: =

그림 설명 update.gif

(DML_table_expression_clause :: =, update_set_clause :: =, where_clause :: =, returning_clause :: =, error_logging_clause :: =)

DML_table_expression_clause :: =

그림 설명 DML_table_expression_clause.gif

(subquery :: =-SELECT의 일부, subquery_restriction_clause :: =, table_collection_expression :: =)

subquery_restriction_clause :: =


그림 설명 subquery_restriction_clause.gif

table_collection_expression :: =


그림에 대한 설명 table_collection_expression.gif

update_set_clause :: =


그림 update_set_clause에 대한 설명입니다. gif

where_clause :: =


그림 설명 where_clause.gif

returning_clause :: =


그림 설명 returning_clause.gif

error_logging_clause :: =

그림 설명 error_logging_clause.gif

의미

힌트

설명 지정 명령문에 대한 실행 계획 선택에 대한 지침을 최적화 프로그램에 전달합니다.

UPDATE 키워드 바로 뒤에 병렬 힌트를 배치하여 두 하위 항목을 병렬화 할 수 있습니다. 거짓말 스캔 및 UPDATE 작업.

참조 :

  • Oracle Database Performance Tuning Guide 및 ” 힌트 구문 및 설명은 Using Hints “를 참조하십시오.

  • 병렬 DML에 대한 자세한 내용은 Oracle Database Performance Tuning Guide 및 Oracle Database Concepts

DML_table_expression_clause

ONLY 절은 뷰에만 적용됩니다. UPDATE 절의보기가 계층 구조에 속하는보기이고 어떤 항목에서도 행을 업데이트하지 않으려면 ONLY 구문을 지정하십시오.

참조 :

“DML_table_expression_clause에 대한 제한”및 “테이블 업데이트 : 예제”

스키마

업데이트 할 개체를 포함하는 스키마를 지정합니다. schema를 생략하면 데이터베이스는 개체가 자신의 스키마에 있다고 가정합니다.

table | 보기 | materialized_view | subquery

테이블, 뷰, 구체화 된 뷰 또는 업데이트 할 하위 쿼리에서 반환 된 열의 이름을 지정합니다. 테이블에 대해 UPDATE 문을 실행하면 테이블과 관련된 모든 UPDATE 트리거가 실행됩니다.

  • view를 지정하면 데이터베이스가보기의 기본 테이블을 업데이트합니다.뷰의 정의 쿼리에 다음 구문 중 하나가 포함 된 경우 INSTEAD OF 트리거를 제외하고는 뷰를 업데이트 할 수 없습니다.

집합 연산자 ADISTINCT연산자 집계 또는 분석 함수 AGROUPBY,ORDERBY,MODEL,CONNECTBY또는STARTWITH절SELECT목록SELECT목록의 하위 쿼리WITH READ ONLY조인으로 지정된 하위 쿼리 (일부 예외 있음) , Oracle Database Administrator “s Guide

  • 보기를 통해 둘 이상의 기본 테이블을 업데이트 할 수 없습니다.

  • 또한 보기는 WITH CHECK , 결과 데이터가 뷰의 정의 쿼리를 충족하는 경우에만 뷰를 업데이트 할 수 있습니다.

  • table 또는 view의 기본 테이블에 하나 이상의 도메인 인덱스 열이 포함 된 경우이 문은 적절한 인덱스 유형 업데이트 루틴을 실행합니다.

  • 읽기 전용 구체화 된 뷰에서 행을 업데이트 할 수 없습니다. 쓰기 가능한 구체화 된 뷰에서 행을 업데이트하면 데이터베이스가 기본 컨테이너 테이블에서 행을 업데이트합니다. 그러나 다음 새로 고침 작업시 업데이트를 덮어 씁니다. 구체화 된 뷰 그룹의 일부인 업데이트 가능한 구체화 된 뷰의 행을 업데이트하면 데이터베이스는 마스터 테이블의 해당 행도 업데이트합니다.

참조 또한 :

  • 색인 유형 업데이트 루틴에 대한 자세한 내용은 Oracle Data Cartridge 개발자 가이드

  • CREATE MATERIALIZED VIEW에 대한 정보는 업데이트 가능한 구체화 된 뷰 생성

PARTITION | SUBPARTITION

table 업데이트 대상입니다. 파티션을 나눈 테이블의 값을 업데이트 할 때 파티션 이름을 지정할 필요가 없습니다. 그러나 경우에 따라 파티션 이름을 지정하는 것이 복잡한 where_clause보다 효율적일 수 있습니다. .

참조 :

“파티션 된 테이블 및 인덱스 참조”및 “파티션 업데이트 : 예”

dblink

지정 원격 데이터베이스에 대한 데이터베이스 링크의 전체 또는 부분 이름 그는 개체가 있습니다. Oracle Database 분산 기능을 사용하는 경우에만 데이터베이스 링크를 사용하여 원격 개체를 업데이트 할 수 있습니다.

dblink,를 생략하면 데이터베이스는 개체가 로컬 데이터베이스에 있습니다.

참조 :

데이터베이스 링크 참조에 대한 정보는 “원격 데이터베이스의 개체 참조”

subquery_restriction_clause

subquery_restriction_clause를 사용하여 다음 방법 중 하나로 하위 쿼리를 제한합니다.

WITH READ ONLY 지정 WITH READ ONLY 테이블 또는 뷰를 업데이트 할 수 없음을 나타냅니다.

WITH CHECK OPTION WITH CHECK OPTION를 지정하여 Oracle 데이터베이스가 테이블 또는 뷰에 대한 변경을 금지 함을 나타냅니다. 하위 쿼리에 포함되지 않은 행. DML 문의 하위 쿼리에 사용되는 경우 FROM 절의 하위 쿼리에이 절을 지정할 수 있지만 WHERE 절.

CONSTRAINT 제약 조건 CHECK OPTION 제약 조건의 이름을 지정합니다. 이 식별자를 생략하면 Oracle은 자동으로 제약 조건에 SYS_C n 형식의 이름을 할당합니다. 여기서 n은 데이터베이스 내에서 고유 한 제약 이름입니다.

참조 :

“With CHECK OPTION 절 사용 : 예제”

table_collection_expression

table_collection_expression를 사용하면 collection_expression의 값이 쿼리 및 DML 작업을 위해 테이블로 처리되어야 함을 Oracle에 알릴 수 있습니다. collection_expression는 하위 쿼리, 열, 함수 또는 컬렉션 생성자가 될 수 있습니다. 형식에 관계없이 컬렉션 값, 즉 유형이 중첩 된 테이블 또는 varray 인 값을 반환해야합니다. 컬렉션의 요소를 추출하는이 프로세스를 컬렉션 분리라고합니다.

선택 사항 인 더하기 (+)는 TABLE 표현식을 부모와 결합하는 경우 관련이 있습니다. 표. +는 컬렉션 표현식이 null 인 경우에도 쿼리가 외부 테이블의 행을 반환하도록 두 개의 외부 조인을 생성합니다.

참고 :

Oracle의 이전 릴리스에서는 collection_expression가 하위 쿼리 일 때 table_collection_expression는 THE .이 사용은 이제 더 이상 사용되지 않습니다.

table_collection_expression를 사용하여 다른 테이블의 행을 기반으로 한 테이블의 행을 업데이트 할 수 있습니다. 예를 들어 4 개의 분기 별 판매 테이블을 연간 판매 테이블로 롤업 할 수 있습니다.

t_alias

참조 할 테이블, 뷰 또는 하위 쿼리에 대한 상관 관계 이름 (별칭)을 지정합니다. 성명서의 다른 곳에. 이 별칭은 DML_table_expression_clause가 개체 유형 속성 또는 개체 유형 메서드를 참조하는 경우 필요합니다.

참조 :

“상관 업데이트 : 예 “

DML_table_expression_clause에 대한 제한이 절에는 다음 제한이 적용됩니다.

  • table 또는 view의 기본 테이블에는 IN_PROGRESS 또는 FAILED로 표시된 모든 도메인 색인이 포함됩니다.

  • 영향을받는 인덱스 파티션이 UNUSABLE로 표시된 경우 파티션에 삽입 할 수 없습니다.

  • DML_table_expression_clause의 하위 쿼리에 order_by_clause를 지정할 수 없습니다.

  • UNUSABLE로 표시된 인덱스, 인덱스 파티션 또는 인덱스 하위 파티션을 지정하면 UPDATE 문이 실패합니다. SKIP_UNUSABLE_INDEXES 세션 매개 변수 TRUE로 설정되었습니다.

참고 항목 :

세션 매개 변수

update_set_clause

update_set_clause를 사용하면 열 값을 설정할 수 있습니다.

열

업데이트 할 개체의 열 이름을 지정합니다. update_set_clause에서 테이블의 열을 생략하면 해당 열의 값이 변경되지 않습니다.

column는 LOB 개체 속성을 참조한 다음 먼저 빈 또는 null 값으로 초기화해야합니다. 리터럴로 업데이트 할 수 없습니다. 또한 직접 UPDATE SQL 문이 아닌 다른 방법을 사용하여 LOB 값을 업데이트하는 경우 먼저 LOB가 포함 된 행을 잠 가야합니다. 자세한 내용은 for_update_clause를 참조하세요.

column가 파티션을 나눈 테이블의 파티션 키의 일부인 경우 UPDATE 행 이동을 활성화하지 않는 한 행을 다른 파티션 또는 하위 파티션으로 이동하는 열의 값을 변경하면 실패합니다. CREATE TABLE 또는 ALTER TABLE의 row_movement_clause를 참조하세요.

또한 column가 partition_value div에 아직없는 열에 대한 값을 지정하면 목록으로 분할 된 테이블의 분할 키인 경우 UPDATE가 실패합니다. > 파티션 중 하나의 목록입니다.

subquery

업데이트 된 각 행에 대해 정확히 하나의 행을 반환하는 하위 쿼리를 지정합니다.

  • If update_set_clause에 하나의 열만 지정하면 하위 쿼리는 하나의 값만 반환 할 수 있습니다.

  • update_set_clause 인 경우 하위 쿼리는 지정한 열 수만큼 값을 반환해야합니다.

  • 서브 쿼리가 행을 반환하지 않으면 열에 null이 할당됩니다.

  • 이 subquery가 원격 개체를 참조하는 경우 UPDATE 작업은 참조하는 한 병렬로 실행할 수 있습니다. ce는 로컬 데이터베이스의 개체로 루프백하지 않습니다. 그러나 DML_table_expression_clause의 subquery가 원격 개체를 참조하는 경우 UPDATE 작업은 알림없이 순차적으로 실행됩니다.

하위 쿼리 내에서 flashback_query_clause를 사용하여 와 과거 데이터. 이 절에 대한 자세한 내용은 SELECT의 flashback_query_clause를 참조하십시오.

참조 :

  • SELECT 및 “서브 쿼리 사용”

  • CREATE TABLE 문서의 parallel_clause

expr

해당 열에 할당 된 새 값으로 해석되는 표현식을 지정합니다.

참조 :

expr 및 “객체 테이블 업데이트 : 예”

DEFAULT 열을 이전에 기본값으로 지정한 값으로 설정하려면 DEFAULT를 지정하십시오. 열 값입니다. 해당 열에 대한 기본값이 지정되지 않은 경우 데이터베이스는 열을 null로 설정합니다.

기본값으로 업데이트 제한 사항 다음 경우 DEFAULT를 지정할 수 없습니다. 뷰를 업데이트하고 있습니다.

VALUE 절

VALUE 절을 사용하면 개체 테이블의 전체 행을 지정할 수 있습니다.

VALUE 절에 대한 제한이 절은 개체 테이블에 대해서만 지정할 수 있습니다.

참고 :

RAW 열에 문자열 리터럴을 삽입하면 후속 쿼리 중에 Oracle 데이터베이스가 전체 테이블 스캔을 수행합니다. RAW 열에있을 수있는 색인을 사용하는 대신

참조 :

“객체 테이블 업데이트 : 예”

where_clause

where_clause를 사용하면 업데이트 된 행을 지정된 condition는 사실입니다. 이 절을 생략하면 데이터베이스가 테이블 또는 뷰의 모든 행을 업데이트합니다. condition 구문에 대해서는 7 장 “조건”을 참조하십시오.

where_clause는 업데이트되는 값. where_clause를 지정하지 않으면 모든 행이 업데이트됩니다. where_clause를 충족하는 각 행에 대해 update_set_clause에서 등호 연산자 (=)의 왼쪽 열이 값으로 설정됩니다. 연산자 오른쪽에있는 해당 표현식의. 행이 업데이트되면 표현식이 평가됩니다.

returning_clause

반환 절은 DML 문의 영향을받는 행을 검색합니다. 테이블 및 구체화 된 뷰와 단일 기본 테이블이있는 뷰에 대해이 절을 지정할 수 있습니다.

단일 행에서 작동 할 때 returning_clause가있는 DML 문 영향을받는 행, rowid 및 REFs를 사용하여 영향을받는 행에 대한 열 표현식을 검색하고 호스트 변수 또는 PL / SQL 변수에 저장할 수 있습니다.

작동시 여러 행에서 returning_clause가있는 DML 문은 바인드 배열의 영향을받는 행과 관련된 표현식, rowid 및 REFs의 값을 저장합니다. p>

expr expr 목록의 각 항목은 유효한 표현식 구문이어야합니다.

INTO INTO 절은 변경된 행의 값이 data_item 목록에 지정된 변수에 저장됨을 나타냅니다.

data_item 각 data_item는 검색된 expr 값을 저장하는 호스트 변수 또는 PL / SQL 변수입니다.

RETURNING 목록의 각 표현식에 대해 INTO list.

제한 사항 다음 제한 사항은 RETURNING 절에 적용됩니다.

  • expr는 다음과 같이 제한됩니다.

    • UPDATE 및 DELETE 각 expr 문은 단순 표현식이거나 단일 집합 집계 함수 표현식이어야합니다. 동일한 returning_clause에서 단순 표현식과 단일 집합 집계 함수 표현식을 결합 할 수 없습니다. INSERT 문의 경우 각 expr는 단순 표현식이어야합니다. INSERT 문 RETURNING 절에서는 집계 함수가 지원되지 않습니다.

    • Single- 집합 집계 함수 표현식은 DISTINCT 키워드를 포함 할 수 없습니다.

  • expr 목록에 기본 키 열 또는 기타 NOT NULL 열이 포함 된 경우 테이블에 BEFORE UPDATE 트리거가 정의되어 있습니다.

  • 다중 테이블 삽입 용.

  • 이 절은 병렬 DML 또는 원격 객체와 함께 사용할 수 없습니다.

  • 이 절로 LONG 유형을 검색 할 수 없습니다.

  • 이 절을보기에 대해 지정할 수 없습니다. INSTEAD OF 트리거가 정의되었습니다.

참고 항목 :

PL / SQL 사용자 ” BULK COLLECT 절을 사용하여 컬렉션 변수에 여러 값을 반환하는 방법에 대한 정보는 가이드 및 참조입니다.

error_logging_clause

error_logging_clause는 UPDATE 문에서 INSERT 문에서와 동일한 동작을합니다. 자세한 내용은 INSERT 문 error_logging_clause를 참조하세요.

참조 :

“오류 로깅을 사용하여 테이블에 삽입 : 예”

예

테이블 업데이트 : 예 다음 성명서는 SH_CLERK 직무를 수행하는 모든 직원에게 null 커미션을 제공합니다.

UPDATE employees SET commission_pct = NULL WHERE job_id = "SH_CLERK";

다음 성명은 Douglas Grant를 관리자로 승격합니다. $ 1,000를 인상 한 부서 20 :

UPDATE employees SET job_id = "SA_MAN", salary = salary + 1000, department_id = 120 WHERE first_name||" "||last_name = "Douglas Grant"; 

다음 진술은 employees 직원의 급여를 인상합니다. remote 데이터베이스의 테이블 :

UPDATE employees@remote SET salary = salary*1.1 WHERE last_name = "Baer";

다음 예는 UPDATE 문 :

  • 두 형식의 update_set_clause를 하나의 문으로 함께

  • 상관 하위 쿼리

  • 업데이트 된 행을 제한하는 where_clause

위의 UPDATE 문은 다음 작업을 수행합니다.

  • 제네바 또는 뮌헨에서 근무하는 직원 만 업데이트 (위치 2900 및 2700)

  • 세트 department_id 이러한 직원을 봄베이에 해당하는 department_id (location_id 2100)

  • 각 직원의 급여를 부서 평균 급여의 1.1 배로 설정

  • 각 직원의 커미션을 부서 평균 커미션의 1.5 배로 설정

파티션 업데이트 : 예제 다음 예제는 sales 테이블의 단일 파티션에있는 값을 업데이트합니다.

UPDATE sales PARTITION (sales_q1_1999) s SET s.promo_id = 494 WHERE amount_sold > 1000;

객체 테이블 업데이트 : 예 다음 문은 두 개의 객체 테이블, people_demo1 및 people_demo2를 만듭니다. , Table Collections : Examples에서 생성 된 people_typ 객체. 이 예에서는 people_demo2에서 행을 선택하여 people_demo1 행을 업데이트하는 방법을 보여줍니다.

이 예에서는 SET 절과 하위 쿼리 모두의 VALUE 개체 참조 함수입니다.

관련 업데이트 : 예제 상관 하위 쿼리를 사용하여 중첩 된 테이블 행을 업데이트합니다. “테이블 컬렉션 : 예제”를 참조하십시오.

업데이트 중 RETURNING 절 사용 : 예제 다음 예제는 업데이트 된 행의 값을 반환하고 결과를 PL에 저장합니다. / SQL 변수 bnd1, bnd2, bnd3 :

다음 예는 반환 절의 표현식에서 단일 집합 집계 함수를 지정할 수 있음을 보여줍니다.

UPDATE employees SET salary = salary * 1.1 WHERE department_id = 100 RETURNING SUM(salary) INTO :bnd1;

Articles
Previous Post

미국 온라인 상점에서 쇼핑하면 2 ~ 4 일 안에 인도로 배송됩니다!

Next Post

Blue Dog Breeds-무엇이 그들을 그렇게 아름답게 만드는가?

답글 남기기 답글 취소하기

최신 글

  • 2020 년 세계 최고의 사진 학교
  • 주권 시민이 반정부 철학을 도로로 가져옴
  • 치장 벽토 수리 비용 가이드
  • Muckrakers (한국어)
  • 정밀 종양학

보관함

  • 2021년 2월
  • 2021년 1월
  • 2020년 12월
  • 2020년 11월
  • 2020년 10월
  • 2020년 9월
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.