こんにちは
現在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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら…
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
データを削除しても表領域の使用率が減りません
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Yahooフリマってどれくらい時間...
-
指定した文字があった場合、そ...
-
VBA:Openステートメントで開い...
-
告白してフラれた相手の連絡先...
-
ウェブページへのアクセス不可 ...
-
喧嘩をしてLINE削除され、 また...
-
VBA 特定の文字列を含む行を削...
-
エクセルVBAで行削除時にエラー...
-
Windows11に残されたWindows10...
-
nProtectの削除について(PSO2削除)
-
Accessの削除クエリについて
-
離婚後の連絡
-
VBA IF文でORを使ったとき後ろ...
-
Windows media playerでcd-rwに...
-
【C#】ifと#ifの違い、そして#e...
-
YouTubeの初期音量が最大になり...
-
エクセルで下の空白行を削除したい
-
もう関わりたくない人がいたらL...
-
EXCELの列複数削除
-
(Access)複数条件の重複デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えてgooの裏事情
-
Yahooフリマってどれくらい時間...
-
Facebookメッセンジャーの不具合
-
もう関わりたくない人がいたらL...
-
VBA:Openステートメントで開い...
-
喧嘩をしてLINE削除され、 また...
-
指定した文字があった場合、そ...
-
これはやらせですよね?
-
何回ぐらい質問を削除されると...
-
エクセルで住所の混在する「丁...
-
BOX Fresh で質問に回答したの...
-
(Access)複数条件の重複デー...
-
アクセスにおいて間違って削除...
-
インスタアカウント、前の携帯...
-
エクセルVBAで行削除時にエラー...
-
ウェブページへのアクセス不可 ...
-
告白してフラれた相手の連絡先...
-
google chromeのブックマークが...
-
女友達にLINEしたら、既読スル...
-
すべてやりきった、大満足を意...
おすすめ情報