- ベストアンサー
デフォルトでデータが表示される順番
質問があります。 oracle初心者です。 oracle8.1で insert文によってデータを登録すると 一番最後のレコードに表示されません。 select文(select * from "テーブル名")を 書いて全レコードを抽出すると、中途半端な位置に 最新レコードが表示されます。 デフォルトでテーブルのデータが表示される位置に 決まりというのはあるのでしょうか MYSQLでは最後の行に最新レコードが表示されるはずですが、 オラクルでは違うのでしょうか。 もちろん、文字コード順や数値の順番ではないみたいです。 困っていますご回答よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>デフォルトでテーブルのデータが表示される位置に >決まりというのはあるのでしょうか 無いです。 どのバージョンでもそうですが、順序を意識したselect分をしたいのなら、必ずorder by句でソート順の指定をしてください。 #アクセスパスによっても出力順が変わったりしますので。
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
殆どのRDBMSでは、「order by」を指定しない限り、検索順序の保証はされていません。 >MYSQLでは最後の行に最新レコードが表示されるはず MySQLも、そんな保証はしていませんけど? MySQLのマニュアルにも、「order byなしでは順序保証しない」ことが明記されていますよ? 例外的にSQL Serverでは、「primary key」指定時に、「order by」なしでも順序保証しているようですけどね。
お礼
>MySQLも、そんな保証はしていませんけど? そうだったんですか! 初めて知りました。 本当に勉強になりました ありがとうございました。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
>デフォルトでテーブルのデータが表示される位置に >決まりというのはあるのでしょうか ORDER指定をしない以上は、表示の順番はどうでも良いという意味になりますので、オラクルの都合で表示します。 オラクルにとって都合が良いのは検索順に出すことですが、検索順はオプティマイザが検索方法を考えるので、 状況次第で変わることになります。
お礼
急いでたので助かりました。 ありがとうございました。 大変参考になったので、k_o_r_o_c_h_a_nさんにも ポイント差し上げたいのですが 最初に回答していただいた方に差し上げることにします。 ごめんなさい。
お礼
急いでたので本当に助かりました。 ありがとうございました。