SQLコマンド(UPDATE文)」からの出題です。例題3.96社員の所属部署、給与を記録したempテーブルと、部署ごとの社員の給与の合計額を記録したdept_salテーブルがある。empテーブルの内容が更新されたので、dept_salテーブルの給与の合計額(sum_salary列)を更新したい。これを実現する適切なSQL文を選びなさい。dept_nameには必要なデータが既に入っているものとします。e.dept_id;※この例題は実際のOSS-DB技術者認定試験とは異なります。sub-SELECT)です。句をつけることができます。PostgreSQLの拡張として、FROM句をつけてテーブルを結合し、更新後の値を指定する式あるいは更新対象の行を制限するWHEREで参照することもできます。個々の選択肢を調べてみましょう。Aは正しいUPDATEです。カッコ内のSELECT文はempテーブルのdept_idがdept_salテーブルの更新対象行と同じ行についてsalaryの合計を求めています。BはAと似ていますが、カッコの付け方が違います。カッコ内のSELECTはdept_idの値と無関係にempテーブルのsalaryの合計を求めてしまいます。WHERE句はUPDATEの対象となる行を制限するために使われるのですが、e.dept_idはSELECT文のempテーブルを参照するものとは見なされないため、エラーになります。Cでは、カッコ内のSELECTはdept_idごとに分類したsalaryの合計値を返します。dept_idが5種類あったとして、このSELECTはdept_salテーブルと紐付けられることなく、5行のデータを返します。sub-SELECTは更新対象の各行に対して1行しかデータを返してはいけない、という制約があるため、エラーになります。UPDATEでsub-SELECTを使う場合、更新対象の各行に対して別々にSELECTが実行されるものとして、どうなるかを考えるとわかりやすいでしょう。DとEはPostgreSQLの拡張のFROM句を使ったものですが、sumなどの集約関数はこの構文では使えないという制約があります。CやJavaなど多くのプログラミング言語にある代入演算子ですが、SQLでは使用できませんので、やはりエラーになります。実際に選択肢のUPDATEを試してみると、B、D、Eは構文エラー、Cは実行時エラーになります。従って、正解はAです。今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。ご質問・ご意見はこちら※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。アーカイブを試験ごとにまとめています。ご紹介OSS-DB認定教材や教育機関について詳しくご説明いたします。受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。メリット受験対策インタビューFAQ資料請求・お問い合わせプライバシーポリシーこの内容で送信します。よろしいですか?キャンセル。