ホームページ >データベース >Oracle >Oracleでのupdateの使用法は何ですか

Oracleでのupdateの使用法は何ですか

WBOY
WBOYオリジナル
2022-03-01 17:10:5330016ブラウズ

Oracle での update の使用法: 1. テーブル内のデータを変更するために使用され、構文は「UPDATE テーブル名 SET 列名 = 新しい値 WHERE 列名 = 特定の値」です; 2. 2 つの値を結合するために使用されます。テーブル 関連付けを通じてビューを作成し、更新します。

Oracleでのupdateの使用法は何ですか

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle での update の使用法とは何ですか

標準の update ステートメントの提供に加えて、Oracle では、さまざまなアプリケーション シナリオに対処するための他のデータ更新メソッドも提供しています。

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

Update ステートメントは、テーブル内のデータを変更するために使用されます。 W3school の構文:

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值。

update join view

update join view は、まず 2 つのテーブルを関連付けてビューを作成し、次にソース テーブルを更新する目的を達成するためにビューを更新します。

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

上記の原則で述べたように、括弧内はビュー、セット内は更新する必要があるフィールドです。この方法は直接的かつ効率的ですが、かなり制限的です。従業員表の主キーは 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);

その原則は、alias2 のデータを選択し、各項目が ON (alias1 条件と結合) であることです。 )、一致する場合は更新操作 (Update) が実行され、一致しない場合は挿入操作 (Insert) が実行されます。表示カーソルと高速カーソル。

高速カーソル

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 ループにより、バッチ データを更新する方法と、Oracle の物理的な ROWID が提供されます。フィールド (Oracle にはデフォルトで各テーブルに ROWID フィールドがあり、一意のインデックスです)。更新するレコードをすばやく見つけることができ、複雑なクエリ ステートメントもサポートできます。

推奨チュートリアル: 「

Oracle ビデオ チュートリアル

以上がOracleでのupdateの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。