首页 新闻 会员 周边

向表插入记录的顺序和读取记录的次序一样吗??

0
悬赏园豆:100 [待解决问题]

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如果是顺序读取的话 那么也可能和插入数据的顺序不一样

可能我这里数据量太小 数据库活动也不频繁 所以看起来好像查询时的顺序和插入时的顺序一样吧

最近在玩魔兽的主页 最近在玩魔兽 | 初学一级 | 园豆:65
提问于:2011-03-18 22:48
< >
分享
所有回答(3)
0

这个是不一定的。这好像说到数据库内部机制了吧。。。。好像在哪看过,数据库的存储也是在开块内存,然后存入。

说白了就是存储顺序是没顺序可言的吧。还有就是数据库的查询结果,好像数据库和数据库之间也不太一样,都有一个默认的查询结果排序方法,比如按字母排序等 ,数据量小了应该看不出这种效果的

小 猫 猫 | 园豆:205 (菜鸟二级) | 2011-03-19 11:05
0

你这个不是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
*/

邀月 | 园豆:25475 (高人七级) | 2011-03-20 09:12
0

兄弟,这是数据库原理的问题。

    怎么显示出来,还得看你的排序依据,你建立的索引是聚集还是非聚集索引,显示时升序还是降序,这都会对显示效果产生影响。

.NET快速开发框架 | 园豆:946 (小虾三级) | 2011-03-20 18:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册