sql >> データベース >  >> RDS >> Oracle

Oracleでテーブルを更新する方法

    このSQLチュートリアルでは、OracleのUpdateステートメントの説明と例を示します

    OracleのUpdateステートメントは、テーブル内の既存の行を更新するために使用されます。これはDMLステートメントです。 DMLスタンドデータ操作言語。このステートメントを使用して、テーブル内の特定の行、行のセット、またはすべての行を更新できます。

    構文は以下のとおりです

    :更新が必要なテーブル名です
    :更新する必要があるのは、テーブル内の単一の列または複数の列です
    :更新する列の値です。サブクエリを使用してその値を取得することもできます
    条件 :すべての行が更新される場所を決定するのはwhere条件です。列名、式のサブクエリ、比較演算子で構成できます

    重要なポイント
    1)完了後の更新ステートメントは、設定されたフィードバックをオフに発行していない限り、更新された行数を示します
    2)更新された行がない場合は、更新された0行が表示されます
    3)加えられた変更は次のとおりです。セッションに表示され、Oracleデータベースの他のセッションには表示されません
    4)「commit;」を実行する必要があります。データベースまたは「ロールバック」で変更を永続的にするステートメント。行われた変更をロールバックするには
    5)最初に同じwhere条件をselectで実行して、更新ステートメントを発行する前に更新される行と行の数を確認することをお勧めします
    6)単一行を対象としている場合は、可能であればOracleの主キーを使用してください

    SQL> select * from emp where EMPNO=7844;
    
    EMPNO ENAME JOB MGR HIREDATE SAL COMM
    ---------- ---------- --------- ---------- --------------- ---------- ----------
    DEPTNO
    ----------
    7844 TURNER SALESMAN 7698 08-SEP-81 1500 0
    30
    
    SQL> update emp set SAL=15000 where EMPNO=7844;
    
    1 row updated.
    
    SQL> select * from emp where EMPNO=7844;
    
    EMPNO ENAME JOB MGR HIREDATE SAL COMM
    ---------- ---------- --------- ---------- --------------- ---------- ----------
    DEPTNO
    ----------
    7844 TURNER SALESMAN 7698 08-SEP-81 15000 0
    30
    
    SQL> commit;
    
    Commit complete.
    
    

    サブクエリを使用してステートメントを更新する

    updateステートメント内でもサブクエリを使用できます。

    SQL> select * from emp;
    
    EMPNO ENAME JOB MGR HIREDATE SAL COMM
    ---------- ---------- --------- ---------- --------------- ---------- ----------
    DEPTNO
    ----------
    7902 FORD ANALYST 7566 03-DEC-81 3000
    20
    
    7934 MILLER CLERK 7782 23-JAN-82 1300
    10
    
    2 rows selected.
    
    SQL> update emp set sal=(select sal from emp where empno=7934) where EMPNO=7902;
    
    1 row updated.
    
    SQL> select * from emp;
    
    EMPNO ENAME JOB MGR HIREDATE SAL COMM
    ---------- ---------- --------- ---------- --------------- ---------- ----------
    DEPTNO
    ----------
    7902 FORD ANALYST 7566 03-DEC-81 1300
    20
    
    7934 MILLER CLERK 7782 23-JAN-82 1300
    10
    
    2 rows selected.
    
    SQL> commit;
    
    Commit complete.
    
    

    where句なしでステートメントを更新

    updateステートメントでwhere句を指定しないことで、テーブル内のすべての行を更新できます

    Update FND_USER set end_date='1-JUN-2018'  ;
    

    上記のステートメントは、テーブルFND_USER

    のすべての行を更新します。

    複数の列を持つステートメントの更新

    同じ更新ステートメントで複数の列を指定できます

    Update FND_USER set end_date='1-JUN-2018' , password='' ;
    
    を更新します

    上記のステートメントは、テーブルFND_USERのすべての行を指定されたend_dateで更新し、すべてのパスワードをnullにします

    関連記事

    OracleのINSERTステートメント
    Oracleのテーブルステートメントから削除
    oraclecreatetableの例
    Oracleのテーブルの変更
    altertable add column oracle
    Oracleの更新に関するドキュメント

    >
    1. 高可用性のためにPostgreSQL用のPerconaディストリビューションをデプロイする方法

    2. Entity Frameworkから単一のレコードを削除しますか?

    3. Linux /MacからAmazonEC2でMySQLに接続するにはどうすればよいですか?

    4. Oracleで外部キーにインデックスを作成する必要がありますか?