SQL code
SQL> create table t22(id number,name varchar2(20) primary key);
Table created.
SQL> insert into t22 values(2,'ha');
1 row created.
SQL> insert into t22 values(1,'wa');
1 row created.
SQL> insert into t22 values(3,'ya');
1 row created.
SQL> insert into t22 values(5,'ba');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t22;
ID NAME
---------- --------------------
2 ha
1 wa
3 ya
5 ba
SQL> select a.*,rownum from t22 a;
ID NAME ROWNUM
---------- -------------------- ----------
2 ha 1
1 wa 2
3 ya 3
5 ba 4
如上所示 难道SELECT查询时的顺序就是插入时的顺序吗
印象中以前在什么地方看到过专门对这个问题的讲解 可是忘了
我只记得好像书上说过插入的数据不一定是顺序存储的
不过SELECT如果是顺序读取的话 那么也可能和插入数据的顺序不一样
可能我这里数据量太小 数据库活动也不频繁 所以看起来好像查询时的顺序和插入时的顺序一样吧
这个是不一定的。这好像说到数据库内部机制了吧。。。。好像在哪看过,数据库的存储也是在开块内存,然后存入。
说白了就是存储顺序是没顺序可言的吧。还有就是数据库的查询结果,好像数据库和数据库之间也不太一样,都有一个默认的查询结果排序方法,比如按字母排序等 ,数据量小了应该看不出这种效果的
你这个不是MS Sql Server 语法。如果是MSSQL server,则因为在创建主键时,SQL Server会依据主键创建一个聚集索引,默认排序应该是以索引顺序排序:
create table tbOrder(id int,name varchar(20) primary key);
go
insert into tbOrder values(2,'ha');
insert into tbOrder values(1,'wa');
insert into tbOrder values(3,'ya');
insert into tbOrder values(5,'ba');
insert into tbOrder values(2,'ha2');
insert into tbOrder values(1,'wa2');
insert into tbOrder values(3,'ya2');
insert into tbOrder values(5,'ba2');
select * from tbOrder;
/*
id name
5 ba
5 ba2
2 ha
2 ha2
1 wa
1 wa2
3 ya
3 ya2
*/
兄弟,这是数据库原理的问题。
怎么显示出来,还得看你的排序依据,你建立的索引是聚集还是非聚集索引,显示时升序还是降序,这都会对显示效果产生影响。