

こんにちは
現在ORACLE Bronzeの勉強をしていて、妙に引っかかる部分があるので質問をさせて下さい。
インプレスジャパンが刊行しているBronze DBA10gの問題集の中に以下のような問題があります。
次の中でDDL文では実現できない機能を2つ選びなさい。
A.ユーザーの作成
B.表の削除
C.データ変更の確定
D.ビューの名称変更
E.表データの削除
解答はC・Eだったのですが、ここで頭に?が浮かびました。
TRUNCATE文で表データの削除できるんじゃないの?というものです。
一般にTRUNCATE文の説明には「表の切捨て」や「表データの切捨て」という言葉を使っていますが、以下が質問になります。
1.「表データの削除」と「表データの切捨て」はまったく違う現象なのか。どう違う現象なのか。
2.結局TRUNCATE文も表のデータを削除してるのではないのか。
以上です。
質問が長くなってしまい申し訳ありませんでした。
認識違いなどありましたらご指摘ください、よろしくお願いします。
参考:http://www.thinkit.co.jp/free/tettei/1/3/1/
の第2問に同じ問題が載っています。
No.7ベストアンサー
- 回答日時:
>1.「表データの削除」と「表データの切捨て」はまったく違う現象なのか。
どう違う現象なのか。DML(データ操作言語)の削除とDDL(データ定義言語)の削除とは、全然違います。敢えて対応付けるとすれば、以下のようになるかと。
「表データの削除」→DELETE[DML]
「表の切り捨て」(全ての表データを削除)→TRUNCATE[DDL]
「表の削除」→DROP[DDL]
一般的に、DML[Data Manipulation Language]ではデータベース内のデータに関する操作を行いますが、DDL[Data Description Language]ではスキーマ・オブジェクト(表、ビュー、インデックスなど)に関する操作を行います。よって、Oracleデータベースにおいては、「表データの切捨て」という表現は、おかしくて有り得ないものだと思います。用は、「切り捨て」という言葉は、DDLの中のTRANCATEだけに使用されている言葉だと考えていればいいと思います。
>2.結局TRUNCATE文も表のデータを削除してるのではないのか。
同じ「削除」でも、内部的には以下のような違いがあります。
DELETE→
・ロールバックが可能。
・記憶領域(エクステント)は開放せず。
TRANCATE→
・ロールバックは不可能。
・記憶領域(エクステント)は開放される。
・しかし、表構造は残る。
で、表構造まで削除したい場合は、DROPを行います。
回答ありがとうございます。
大変参考になりました。
「表データの切捨て」という言葉は、同じく問題集の中で使われていた言葉でした。
DDL文を発行した結果、暗黙COMMITがおまけにあるように、
TRUNCATE文を発行した(表を切り捨てた)結果、表データの削除がおまけにある。
というニュアンスで大丈夫ですかね。
本件とはそれますが、DDLってDate Definition Languageじゃないんでしたっけ。
No.6
- 回答日時:
補足
正直なところ出題される問題が不正確だとは思いますが
(この手の不正確な情報は試験に限らず良くあることです)
> 次の中でDDL文では実現できない機能を2つ選びなさい。
「すべて選びなさい」ではなく「2つ選びなさい」という点からみて
可能性はCとEしかありません。よって許容範囲内かとは思います。
既に書かれていますが、ひねくれるとDDLの暗黙コミットによって選択Cも可能ですし。
回答ありがとうございます。
TRUNCATEも削除なんですね。
リファレンスは見ていませんでした。
確かに言われてみれば、
>>既に書かれていますが、ひねくれるとDDLの暗黙コミットによって選択Cも可能ですし。
なんですね。
そこまでは考えてませんでした。
やはり問題は問題として割り切りも必要ですね・・・。
言い訳になりますが、正しい知識を身につけたいと思っていたので、ここで質問させて頂きました。
決して捻くれてたわけじゃないんですよ(笑)
どうもありがとうございました。
No.5
- 回答日時:
SQLマニュアルを見ればわかりますが
----
TRUNCATE を使用すると、表またはクラスタからすべての行を削除できます。
デフォルトでは、次の処理も実行されます。
削除された行が使用していたすべての領域(ただし、MINEXTENTS 記憶域パラメータで指定された領域は除く)の割当てが解除されます。
・・・・・
----
と書かれているので行の削除が主な機能と考えられます。
掲載先に問い合わせてみては如何ですか?
ぜひ、回答を聞いてみたいところです。
No.4
- 回答日時:
1.「表データの削除」と「表データの切り捨て(truncate)」ではかなり違います。
・TRUNCATEはDROP TABLE権限がないと実行できない
・エクステントを開放してハイウォータマークをリセットする
・暗黙のCOMITTを行い、それまでのトランザクションを終了させる
ゆえに、「TRUNCATE」は「DDL」の一種と言っていいでしょう。
2.TRUNCATEは表データをいちいち見て削除していません。
あくまで領域を開放する動作をおこないます。
そのため、「DELETE」と違い、ROLLBACKができません。
回答ありがとうございます。
なるほど、自分の認識不足でした。
DELETE文を使った「表データの削除」は
データを削除し、ハイウォータマークは変更しない。
TRUNCATE文を使った「表データの切捨て」は
データ領域を解放し、ハイウォータマークを変更する。
表からデータが消えるのは、その副産物。
一般的にTRUNCATE文を発行した結果も、"データの削除"と呼んでいるので、ごっちゃになりやすい。という認識で間違いないでしょうか?
No.2
- 回答日時:
#Oracleはよく知りませんが(汗
一般的にはtruncateは「削除」に含めないですね。条件指定出来ないとかは抜きにしても、ログがないので「元の状態に戻せない」ことが大きいと思います。drop→createのようなものですから。
回答ありがとうございます。
仰るように「元の状態に戻せない」というのが分かれ目なのかな、と考えもしました。
でも、DROP TABLE は"表の削除"ですがROLLBACKはできないよな~。
とか考えてたら、やっぱり分からないままでした。
その辺はどうお考えですか?
# 元の状態に戻せない ≠ ROLLBACKできない ですか・・・?
No.1
- 回答日時:
DELETE と TRUNCATE TABLE の違い
http://www.shift-the-oracle.com/inside/delete-tr …
をどうぞ。
参考URL:http://www.shift-the-oracle.com/inside/delete-tr …
回答ありがとうございます
ご紹介いただいたサイトは自分で調べる段階で閲覧しました。
しかしこのサイト内の説明は、自分の満足のいく解説ではありませんでした。
1.DELETEの「削除」とTRUNCATEの「切捨て」という単語をそもそも使っていない。(どちらとも削除)
2.TRUNCATE文の紹介で「非常に高速にデータを削除することができる。」とあるように、"データを削除する"という点ではDELETE文と違いがないと受け取れた。
なので、サイトを見ただけでは質問に書いた問題の答えにEが含まれる理由が分かりませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- IT・エンジニアリング ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:29
- Visual Basic(VBA) ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:27
- その他(クラウドサービス・オンラインストレージ) 個人情報保護の件 1 2023/05/18 12:19
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Google Drive Googleスプレッドシートについて質問です。 今作っているデータで、 シート1→ベタ打ちでひたすら 2 2022/05/18 14:27
- 宇宙科学・天文学・天気 AIが答えた方程式 1 2023/02/20 00:12
- iPhone(アイフォーン) iphoneのicloud写真データ移動について 3 2022/11/28 18:11
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- iPhone(アイフォーン) 以前使っていたSIMカード抜いた状態のiPhoneの 写真アプリの中のデータを一括削除して 『最近削 2 2022/05/20 03:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Yahooフリマってどれくらい時間...
-
2度と連絡とらないとお互い納得...
-
回答すると削除しましたという...
-
Windows11に残されたWindows10...
-
mp3の埋め込み画像の削除ができ...
-
ベストアンサーに選ばれた回答...
-
アクセスにおいて間違って削除...
-
指定した文字があった場合、そ...
-
告白してフラれた相手の連絡先...
-
nProtectの削除について(PSO2削除)
-
他の回答者に対する批判回答
-
女友達にLINEしたら、既読スル...
-
Windows media playerでcd-rwに...
-
変数を用いて行全体を削除する...
-
VBA:Openステートメントで開い...
-
Excelで改行を維持しつつ数値以...
-
ベストアンサーと悲劇
-
Cookieやキャッシュは削除しな...
-
回答削除のお知らせについて。
-
ココオル。のサイトって「重症...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahooフリマってどれくらい時間...
-
指定した文字があった場合、そ...
-
告白してフラれた相手の連絡先...
-
VBA:Openステートメントで開い...
-
mp3の埋め込み画像の削除ができ...
-
バッチファイルを使用したsql@p...
-
喧嘩をしてLINE削除され、 また...
-
今日の日付が過ぎたらその行を...
-
エクセルで住所の混在する「丁...
-
Windows11に残されたWindows10...
-
もう関わりたくない人がいたらL...
-
【エクセル】セル内の右側のみ...
-
アクセスにおいて間違って削除...
-
VBA IF文でORを使ったとき後ろ...
-
エクセルVBAで行削除時にエラー...
-
ポケモンGOについて質問したい...
-
エクセルで下の空白行を削除したい
-
(Access)複数条件の重複デー...
-
投稿した書き込みの削除の方法...
-
メーリングリストから特定の人...
おすすめ情報