印象中oracle是无序存储的,所以不用order by的查询也应该是无序的。 数据存储在块中,视存储状况不同,查询结果应当不同。 有时候看起来像按rowid排序,但是随着数据被更改,删除,rowid也会变更成其他数据。没有order by的查询应当是杂乱无章的。 CREATE TABLE test(id NUMBER(5),sname VARCHAR2(30));INSERT INTO test VALUES (1,'test1'); INSERT INTO test VALUES (2,'test2'); INSERT INTO test VALUES (3,'test3'); INSERT INTO test VALUES (4,'test4'); INSERT INTO test VALUES (5,'test5');SELECT * FROM test; ID SNAME 1 test1 2 test2 3 test3 4 test4 5 test5UPDATE test SET sname='test6' WHERE id=3; SELECT * FROM test; ID SNAME 1 test1 2 test2 3 test6 4 test4 5 test5DELETE FROM test WHERE sname='test6'; SELECT * FROM test; ID SNAME 1 test1 2 test2 4 test4 5 test5INSERT INTO test VALUES (3,'test3'); SELECT * FROM test; ID SNAME 1 test1 2 test2 4 test4 5 test5 3 test3
数据存储在块中,视存储状况不同,查询结果应当不同。
有时候看起来像按rowid排序,但是随着数据被更改,删除,rowid也会变更成其他数据。没有order by的查询应当是杂乱无章的。
CREATE TABLE test(id NUMBER(5),sname VARCHAR2(30));INSERT INTO test VALUES (1,'test1');
INSERT INTO test VALUES (2,'test2');
INSERT INTO test VALUES (3,'test3');
INSERT INTO test VALUES (4,'test4');
INSERT INTO test VALUES (5,'test5');SELECT * FROM test;
ID SNAME
1 test1
2 test2
3 test3
4 test4
5 test5UPDATE test SET sname='test6' WHERE id=3;
SELECT * FROM test;
ID SNAME
1 test1
2 test2
3 test6
4 test4
5 test5DELETE FROM test WHERE sname='test6';
SELECT * FROM test;
ID SNAME
1 test1
2 test2
4 test4
5 test5INSERT INTO test VALUES (3,'test3');
SELECT * FROM test;
ID SNAME
1 test1
2 test2
4 test4
5 test5
3 test3