助け合いフォーラム
正解
データを操作する
INSERT, DELETE文などがある
解説
SQL文の種類は次のとおりです。DML文の実行ではトランザクションは終了しません。

※ Oracleデータベース公式ドキュメントにおいて、SELECT文はDMLに分類されていますが、INSERTやDELETEといった他のDML文とは異なり、データの変更を行うものではありません。
以上より、
・データを操作する
・INSERT, DELETE文などがある
が正解となります。
参考
トランザクションは以下の要素で構成されます。

※ 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文の説明として正しいものはどれですか(該当するものを全て選択して下さい)。
正解の選択肢に「データを変更する」があるのは少し疑問です。
「データを変更することがある」ならわかりますが、SELECT文はデータの変更をしないと思います。
よく知られているテキスト(オラクルマスター教科書、黒本等)でも「表のデータを変更するSQL文をDMLと呼ぶ」と記載されてたりするんですよね。
でもおっしゃる通り、SELECTは「照会」ですので、データを変更するわけでは無いですよね。
コメント
確かにこれは正しくない可能性があります。
私なりに分析しました。
この問題ではselectはDML、つまりはデータ操作言語として扱われています。SQLの世界ではselectはDMLの一つとして扱われる方が多いです。
これはなぜなのか、それはselectが「データ」を「操作」して取得する句として扱われているからです。
まずこの問題ではDML文のうちデータ操作言語の「データを変更する」という視点で出題されております。
その点においては私の認識では質問者の方のようにselectはあくまで「データを操作する」句であり、「データを変更する」句では無く、
このままではselectが「データを変更する」句であるかのように誤認してしまう問題になっていると考えています。
では正解の選択肢を「データを変更する」から質問者の言う「データを変更することがある」や「データを操作する」に修正すればよいかといえば、
それもまた違うと考えています。
それはなぜか、OracleSilverSQL試験に限っては翔泳社が出版しているオラクル認定資格試験学習書(通称:黒本)ではselectはDMLではなくデータ検索という別の分類に分けられているからです。つまりは本試験においてはDMLにselectは含まれていないのです。
本試験の公式学習ガイド「ORACLE MASTER Silver SQL 2019 Study Guide」では黒本が学習方法として推奨もされているためこの情報のソースとしても的確かと思われます。
運営様、吟味の上最適な問題となるよう修正をお願いいたします。
コメント
この投稿に対して返信しませんか?
r rink_rew
2025/07/22 17:21
余談ですが、SELECTがDMLに含まれるか?という観点では、RDBMSによってもスタンスが違ったりするようです。 https://qiita.com/abe_masanori/items/67e1c2e90a74aaa486dd