pgsql更新操作


PostgreSQL 8.1中国語ドキュメント
Prev
Fast Backward
Chapter 6. データ操作
Fast Forward
Next
6.2. データの更新
データベースに格納されているデータを変更する動作を更新と呼びます.独立したローを更新したり、テーブル内のすべてのローを更新したり、支店の一部を更新したりすることができます.各フィールドを独立して更新できますが、他のフィールドは影響を受けません.
更新を実行するには、次の3つの情報が必要です.
  • テーブルの名前と更新するフィールド名、
  • フィールドの新しい数値、
  • 更新するローはどれですか.

  • Chapter 5では、SQLは通常、データ行に一意の識別子を提供しないと述べています.そのため、どのローを更新する必要があるかを直接宣言することはできません.ただし、更新するローが満たさなければならない条件を宣言できます.テーブルにプライマリ・キーが存在する場合(名前にかかわらず)、プライマリ・キーに一致するローを選択する独立したローを確実に指定できます.グラフィックス化されたデータベース・アクセス・ツールは、これに依存して、独立してローを更新できます.
    たとえば、このコマンドの更新価格が5のすべての製品の価格は10です.
    UPDATE products SET price = 10 WHERE price = 5;

    これにより、ゼロ行、1行以上のデータ行が更新される可能性があります.データ行に一致しない更新をしようとすると、エラーではありません.
    この命令をよく見てみましょう.まずはキーワードUPDATE、そしてテーブル名.通常と同じように、テーブル名もモードで修飾することができます.そうしないと、パスから見つけられます.次はキーワードSETで、フィールド名、等号、新しいフィールド数値が続きます.新しいフィールド値は、定数だけでなく任意のスカラー式であってもよい.たとえば、すべての製品の価格を10%引き上げたい場合は、次のように使用できます.
    UPDATE products SET price = price * 1.10;

    ご覧のように、新しい値に使用する式は、行の既存の数値を参照することもできます.WHERE句も無視しました.この句を無視すると、テーブル内のすべてのローが更新されることを意味します.WHERE句が出現した場合、それに続く条件に一致する行のみが更新される.SET句では等号が付与されており、WHERE句では等号が比較されていることに注意してください.ただし、これは曖昧さを招くことはありません.もちろん条件WHEREは必ずしも等しいテストでなければならないとは限らない.他の多くのオペレータも使用できます(Chapter 9を参照).ただし、式はブール結果を出す必要があります.
    また、SET句により多くの付与値をリストするUPDATEコマンドでより多くのフィールドを更新することもできます.例:
    UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;

    Prev
    Home
    Next
    データ操作
    Up
    データの削除