プロが教える店舗&オフィスのセキュリティ対策術

質問があります。
oracle初心者です。

oracle8.1で
insert文によってデータを登録すると
一番最後のレコードに表示されません。
select文(select * from "テーブル名")を
書いて全レコードを抽出すると、中途半端な位置に
最新レコードが表示されます。

デフォルトでテーブルのデータが表示される位置に
決まりというのはあるのでしょうか

MYSQLでは最後の行に最新レコードが表示されるはずですが、
オラクルでは違うのでしょうか。

もちろん、文字コード順や数値の順番ではないみたいです。
困っていますご回答よろしくお願いします。

A 回答 (3件)

>デフォルトでテーブルのデータが表示される位置に


>決まりというのはあるのでしょうか
無いです。
どのバージョンでもそうですが、順序を意識したselect分をしたいのなら、必ずorder by句でソート順の指定をしてください。
#アクセスパスによっても出力順が変わったりしますので。
    • good
    • 0
この回答へのお礼

急いでたので本当に助かりました。
ありがとうございました。

お礼日時:2007/03/01 08:16

殆どのRDBMSでは、「order by」を指定しない限り、検索順序の保証はされていません。



>MYSQLでは最後の行に最新レコードが表示されるはず

MySQLも、そんな保証はしていませんけど?
MySQLのマニュアルにも、「order byなしでは順序保証しない」ことが明記されていますよ?

例外的にSQL Serverでは、「primary key」指定時に、「order by」なしでも順序保証しているようですけどね。
    • good
    • 1
この回答へのお礼

>MySQLも、そんな保証はしていませんけど?

そうだったんですか!
初めて知りました。

本当に勉強になりました
ありがとうございました。

お礼日時:2007/03/01 08:15

>デフォルトでテーブルのデータが表示される位置に


>決まりというのはあるのでしょうか

ORDER指定をしない以上は、表示の順番はどうでも良いという意味になりますので、オラクルの都合で表示します。
オラクルにとって都合が良いのは検索順に出すことですが、検索順はオプティマイザが検索方法を考えるので、
状況次第で変わることになります。
    • good
    • 2
この回答へのお礼

急いでたので助かりました。
ありがとうございました。

大変参考になったので、k_o_r_o_c_h_a_nさんにも
ポイント差し上げたいのですが
最初に回答していただいた方に差し上げることにします。
ごめんなさい。

お礼日時:2007/03/01 08:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す