助け合いフォーラム

Oracle DB

Oracle Master Silver SQL 2019(1Z0-071)
問題ID : 26879
問題を開く
DML文の説明として正しいものはどれですか(該当するものを全て選択して下さい)。

正解

データを操作する

INSERT, DELETE文などがある

解説

データ操作言語(DML)文は、スキーマ・オブジェクトのデータにアクセスし変更や削除などの操作を行えますが、オブジェクトの構造は変更しません。
SQL文の種類は次のとおりです。DML文の実行ではトランザクションは終了しません。


※ Oracleデータベース公式ドキュメントにおいて、SELECT文はDMLに分類されていますが、INSERTやDELETEといった他のDML文とは異なり、データの変更を行うものではありません。

以上より、
・データを操作する
・INSERT, DELETE文などがある
が正解となります。

参考

トランザクションとは、Oracle Database接続後、または直前のトランザクションの終了後、最初のデータを操作するSQL文(通常のSELECT文は除く)実行時に開始され、一連の操作を確定または取消しするまでの処理のまとまりのことです。
トランザクションは以下の要素で構成されます。


※ Oracleデータベース公式ドキュメントにおいて、SELECT文はDMLに分類されていますが、INSERTやDELETEといった他のDML文とは異なり、データの変更を行うものではありません。

DML文は1つ以上のDML文のまとまりで1つのトランザクションになるのに対し、DDL文、DCL文は1つの文で1つのトランザクションになります。

[トランザクションの開始と終了]
トランザクションは、Oracle Database接続後、または直前のトランザクションの終了後、最初のデータを操作するSQL文(通常のSELECT文は除く)実行時に開始され、下記のいずれかによって終了します。

・COMMIT文またはROLLBACK文の実行
・DDL文の実行
・DCL文の実行
・SQL DeveloperやSQL *Plusの終了
・システム障害の発生



また、トランザクションの終了後の動作は次のようになります。

・トランザクション内のすべての処理が確定または破棄され、取消すことはできない
・データの追加や変更処理がトランザクションの終了によって確定された場合、すべてのユーザーが追加/変更後のデータを参照できる
・トランザクション内のすべてのセーブポイントが破棄される
・排他ロックが解除される

なお、トランザクションを終了する時に実行するCOMMIT文やROLLBACK文は、トランザクション制御文と呼ばれてます。トランザクション制御文には次のものがあります。

上に戻る

DML文の説明として正しいものはどれですか(該当するものを全て選択して下さい)。

投稿日 2025/07/20

正解の選択肢に「データを変更する」があるのは少し疑問です。
「データを変更することがある」ならわかりますが、SELECT文はデータの変更をしないと思います。

2025/07/22 17:15

よく知られているテキスト(オラクルマスター教科書、黒本等)でも「表のデータを変更するSQL文をDMLと呼ぶ」と記載されてたりするんですよね。
でもおっしゃる通り、SELECTは「照会」ですので、データを変更するわけでは無いですよね。


コメント

r rink_rew

2025/07/22 17:21

余談ですが、SELECTがDMLに含まれるか?という観点では、RDBMSによってもスタンスが違ったりするようです。 https://qiita.com/abe_masanori/items/67e1c2e90a74aaa486dd

この返信に対して
コメントを記入できます

2025/07/22 17:26

確かにこれは正しくない可能性があります。
私なりに分析しました。
この問題ではselectはDML、つまりはデータ操作言語として扱われています。SQLの世界ではselectはDMLの一つとして扱われる方が多いです。
これはなぜなのか、それはselectが「データ」を「操作」して取得する句として扱われているからです。
まずこの問題ではDML文のうちデータ操作言語の「データを変更する」という視点で出題されております。
その点においては私の認識では質問者の方のようにselectはあくまで「データを操作する」句であり、「データを変更する」句では無く、
このままではselectが「データを変更する」句であるかのように誤認してしまう問題になっていると考えています。
では正解の選択肢を「データを変更する」から質問者の言う「データを変更することがある」や「データを操作する」に修正すればよいかといえば、
それもまた違うと考えています。
それはなぜか、OracleSilverSQL試験に限っては翔泳社が出版しているオラクル認定資格試験学習書(通称:黒本)ではselectはDMLではなくデータ検索という別の分類に分けられているからです。つまりは本試験においてはDMLにselectは含まれていないのです。
本試験の公式学習ガイド「ORACLE MASTER Silver SQL 2019 Study Guide」では黒本が学習方法として推奨もされているためこの情報のソースとしても的確かと思われます。
運営様、吟味の上最適な問題となるよう修正をお願いいたします。


コメント

y yuki_okada_b

2025/07/22 17:28

追記です。黒本にてselectがデータ検索の分類で表記されている該当ページはp7,表1-2となります。

r rink_rew

2025/07/24 11:31

おっしゃる通り、黒本の記載では、SELECT文は別枠で解説がされてますね。そして第10章の「DML(データ操作文)」でも言及されていない。 一方で、Oracleデータベースの公式ドキュメント「SQL言語リファレンス」では、SELECT文はDMLに含まれてはいる(「SELECT文は、DML文の制限された形式であり、」との補足はありますが、同時に「SELECT文はDMLに含まれる」とは言っている)ので、黒本の記述に基づいて、仮に「SilverSQL試験においては、DMLにSELECTは含まない」と判断するとしても、「Oracleデータベースにおいて、SELECT文はDMLに含まれる」を否定することはできないと。 「SELECTはDMLに含まれるか否か」の理解を問うような問題が実際の試験で出題されるかどうかはわかりませんが、出たら迷いますね。もちろん試験対策の学習コンテンツですから、どういう観点の問題、説明が良いかは、運営様ご検討お願いしますというところです。 なんにせよ、「データを変更する」と言い切ってしまっている選択肢が正答なのは望ましくないのではと私も思います。

この返信に対して
コメントを記入できます

スタッフからの返信

s staff_ishii

2025/07/24 18:24

momoka_takiguchi さん、rink_rew さん、yuki_okada_b さん、 ご指摘の点について、加筆、修正を行いました。 ご報告、誠にありがとうございました。

この投稿に対して返信しませんか?