向表插入记录的顺序和读取记录的次序一样吗?? [问题点数:30分,结帖人wh62592855]

  • 收藏帖子
  • 回复

右鞋左穿

结帖率 100%

SQL code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

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

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

呵呵 我怎么感觉有点绕 绕口令一样

问题点数:30分

0 2009-11-09 18:31:14

回复数 22 只看楼主 引用 举报 楼主

ACMAIN_CHM

 版主

   

不一样。表中的记录是没有顺序的! 虽然在ORACLE中其实还有一个rowid.

但物理上,ORACLE会根据块中的记录情况来自行安排存储的位置。比如 你有 1-100记录,此时删除了10-50,当再次插入记录 101时,它会把这条记录放到原来 10 的那个segment 中去。

0 2009-11-09 18:44:08

只看TA 引用 举报 #1    得分 10

请问insert into select 插入数据后顺序与源数据顺序不同各位大大,现在我有两张表 A(id,code,name) B(id,code,name) 两张表的id列都是不为空的自增列 使用insert into B(code,name) select code

右鞋左穿

恩 谢谢
我知道
你说的是存储的顺序和插入的顺序么

我这里问的是插入的顺序和SELECT查询时读出数据的顺序

0 2009-11-09 19:05:09

只看TA 引用 举报 #2    得分 0

再次明确Oracle插入与读取的顺序问题今天老婆问到一个问题:Oracle中,插入多条记录后,读的时候如果不用Order by,那顺序是如何?如果中间涉及UPDATE和DELETE,是否有影响? 这个其实之前总结过这个问题,但确实感觉没有深刻理解,才导致不是十分确定,看来还是方法上要改进。 之前总结的: http://blog.csdn.net/bisal/article/details/9715387

gisyellow

楼主自己试试不就知道了?

0 2009-11-09 22:14:20

只看TA 引用 举报 #3    得分 0

SQL 添加一列,按顺序自增有这样两张表。上面是投下票信息 Votes是投票数量 现在要按照投票数量排名 投票越多排名靠前。比如DraftId为4的最多161票 第一名 问题是 第二名有三个都是一票DraftId为13,14,

右鞋左穿

我前面不是试过了吗

不过有些问题不是一个简单的测试就能说明的了的

0 2009-11-09 22:16:14

只看TA 引用 举报 #4    得分 0

ORACLE`删数据后再插入数据时排列顺序不是在最后面追加`ORACLE`删完数据后再插入数据的排列顺序不是在最后面追加` 表结构 create table manager( managerid int primary key, managername var

hebo2005

 

新的数据库是顺序的,不过经常有删除插入等动作的话,就是不顺序了
这就是为什么有人认为ORACLE有默认排序的道理

0 2009-11-09 22:21:46

只看TA 引用 举报 #5    得分 0

右鞋左穿

呵呵 看来是我没把问题描述清楚 我换个方式问吧

比如说表TEST里 
插入数据的顺序为 1、3、2、4、5
那么SELECT出来的顺序一定是13245吗

如果是13245的话 那么继续下面的问题
假如过程中删了3 插入了6 
而且碰巧6插入在了被删除的3的位置上
那么这个时候SELECT的顺序是什么
16245?  12456?

0 2009-11-09 22:35:13

只看TA 引用 举报 #6    得分 0

一个表中,几千套数据,将ID修改成自增列后发现ID不连续,之前的数据顺序打乱,如何解决这个问题?ID修改自增列后,ID正序,连续

右鞋左穿

引用 5 楼 hebo2005 的回复:

新的数据库是顺序的,不过经常有删除插入等动作的话,就是不顺序了
这就是为什么有人认为ORACLE有默认排序的道理

呵呵 我就是刚才在看你在开发版块发的那个帖子的时候想到这个问题的

0 2009-11-09 22:35:43

只看TA 引用 举报 #7    得分 0

for循环中进行联网请求数据、for循环中进行异步数据操作,数据排序错乱问题解决;for循环中进行联网请求数据,由于网络请求是异步的,第一个网络请求还没有回调,第二次第三次以及后续的网络请求又已经发出去了,有可能后续的网络请求会先回调;这时我们接收到的数据的排序就会错乱;怎么才能让数据和for循环进行异步操作之前的顺序一样呢;1、网络请求使用同步请求,串型请求,等第一个网络请求回调后再去请求第二个;2、递归迭代,异步的网络请求,在当前请求完成后再去递归请求下一个;但是这两种方式...

xanaduwpz

ORACLE默认是怎么排序的呀?

0 2009-11-10 08:37:27

只看TA 引用 举报 #8    得分 0

用java的for循环批量插入数据的时候总是丢几条为程序做测试,有个这样的功能用for循环批量向数据库插入数据的时候总是丢几条,而丢的那条包的异常是空指针,我觉得向是循环太快程序反映不过来导致赋不上值而丢失数据,请问高手这种情况该怎么解决~~~!!

iqlife

  

无顺序

0 2009-11-10 08:43:52

只看TA 引用 举报 #9    得分 0

mysql里 怎么根据某个字段 进行顺序循环排列,各位大神拜托了!!!比如正常排序的顺序是112234455,想排成123451245这样可以实现吗

hfxk1983

我的试验结果是12456,这就是说默认的SELECT出来的顺序就是插入的先后顺序?关注一下。

引用 6 楼 wh62592855 的回复:

呵呵 看来是我没把问题描述清楚 我换个方式问吧

比如说表TEST里
插入数据的顺序为 1、3、2、4、5
那么SELECT出来的顺序一定是13245吗

如果是13245的话 那么继续下面的问题
假如过程中删了3 插入了6
而且碰巧6插入在了被删除的3的位置上
那么这个时候SELECT的顺序是什么
16245?  12456?

0 2009-11-10 09:18:40

只看TA 引用 举报 #10    得分 0

天上的小星星 在夜里很美丽

引用 6 楼 wh62592855 的回复:

呵呵 看来是我没把问题描述清楚 我换个方式问吧

比如说表TEST里
插入数据的顺序为 1、3、2、4、5
那么SELECT出来的顺序一定是13245吗

如果是13245的话 那么继续下面的问题
假如过程中删了3 插入了6
而且碰巧6插入在了被删除的3的位置上
那么这个时候SELECT的顺序是什么
16245?  12456?

1.一定是13245
2.12456
个人观点 呵呵  
我认为插入的顺序与select的顺序是一致的(在没有任何order by的情况下)

0 2009-11-10 09:36:24

只看TA 引用 举报 #11    得分 0

智能指针的死穴 -- 循环引用C++最新标准C++11中已将基于引用计数的智能指针share_prt收入囊中,智能指针的使用门槛越来越低,不需要使用boost库,我们也能轻松享受智能指针给我们带来的方便。 智能指针,正如它的名字一样,似乎是个近乎完美的聪明角色,程序员不用再纠结于new出来的内存在哪释放比较合适这种问题。比如当一个资源被多个模块共享时,程序员需要在所有模块的生命周期都结束时,由最后一个不使用该指针的模块触发指

dgdgdgdgdgdgd

比如说表TEST里 
插入数据的顺序为 1、3、2、4、5 
那么SELECT出来的顺序一定是13245吗

如果是13245的话 那么继续下面的问题 
假如过程中删了3 插入了6 
而且碰巧6插入在了被删除的3的位置上 
那么这个时候SELECT的顺序是什么

0 2009-11-10 09:37:30

只看TA 引用 举报 #12    得分 0

数据结构基础概念篇数据结构一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。 数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的基本单位 数据项:数据的不可分割的最小单位。一个数据元素可由若干个数据项组成。 数据类

dgdgdgdgdgdgd

假如过程中删了3 插入了6
如果是13245的话 那么继续下面的问题

0 2009-11-10 09:38:01

只看TA 引用 举报 #13    得分 0

Java面试题多思路解析--有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 思路分析:将一个数字插入按要求插入到一个数组中,怎样找到这个数字的的位置是关键。 针对这一题目,我整理了三种解决方案,以下是源代码: [java] view plain copy import java.util.Scanner;      public class

dgdgdgdgdgdgd

新的数据库是顺序的,不过经常有删除插入等动作的话,就是不顺序了 
这就是为什么有人认为ORACLE有默认排序的道理

0 2009-11-10 09:38:22

只看TA 引用 举报 #14    得分 0

(C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作昨天写了单向链表的代码,今天上午把单向循环链表的程序给敲完了。链表的相关操作一样的,包含链表的创建、判断链表是否为空、计算链表长度、向链表中插入节点、从链表中删除节点、删除整个链表释放内存。如果单向链表理解了,那单向循环链表也就不难了。 单向循环链表如下图所示: 看图可以知道,单向循环链表和单向链表差不多,只不过是最后的尾节点指向的不是空,而是指向头节点。理解这一点很重要,

轻骑兵

在不使用order by字句时,oracle不会给你做任何排序的操作。

很多人认为是按rowid排序,实际上并不是如此。实际上oracle不做任何操作(如果未使用rowid)

楼主这个例子只是碰巧而已,并不能说明任何问题(虽然很多情况都是感觉到是按rowid这样)。

oracle进行插入时也不是说后插入的记录的rowid一定比先插入的记录的rowid大,这是无稽之谈。它插入记录时是检查个表看是否有空间插入,如果无,则新的rowid。

0 2009-11-10 09:55:51

只看TA 引用 举报 #15    得分 10

轻骑兵

很多人认为是按rowid排序,实际上并不是如此。实际上oracle不做任何操作(如果未使用rowid)

--这句括号内写错了,应该是  (如果未使用order by)

0 2009-11-10 09:56:47

只看TA 引用 举报 #16    得分 0

一次向数据库中插入多条相同记录的SQL方法(只有一个列不同)declare @i int set @i=1 while @i begin     insert into WebClassSys(loginName,loginPwd,detailId,spId,tId,spKindId) values (@i,'1bbd886460827015e5d605ed44252251',1,1,1,1) set @i=@i+1 end

右鞋左穿

呵呵 一夜之间这么多人回帖啊 谢谢大家哈

回答这个问题我觉得首先得搞明白三点
1、向表中插入数据的顺序
2、数据在ORACLE中实际存储的顺序
3、使用SELECT(无ORDER BY子句)检索出来数据的顺序

从1和3来考虑
从前面简单的实验来看 好像向表中插入数据的顺序就是使用SELECT检索出来数据的顺序(可是往往有些问题并不是一个简单的实验九能够证明的了的)

把1、3结合上2一起考虑一下
考虑一下ORACLE存储的顺序 我们都知道 在ORACLE不一定先插入的数据就一定排在前面 因为当新插入一条记录的时候 ORACLE会自动查找空闲空间 这个时候有可能后插入的记录反而存储在早插入记录的前面
比如说上面说的那种情况:
插入顺序是13245
过程中删了3 插入了6 
而且碰巧6插入在了被删除的3的位置上 
这个时候存储的顺序就应该是16245

好 那接下来就是SELECT检索数据的顺序了 我印象中好像ORACLE读取数据是顺序读取的吧(如果我没记错的话??) 那么这个时候就应该读取出来的顺序是16245(因为存储的顺序是16245 而又是顺序读取)
这样的话就和上面的观点“读取顺序和插入顺序一样”这个观点矛盾了哦 呵呵 因为如果按照前面的观点的话结果应该为12456

好饿 ~ 吃点早餐

0 2009-11-10 10:23:10

只看TA 引用 举报 #17    得分 0

向数据表中插入一条记录的方法用于向获取的分类表中插入默认分类 $categories[] = array("categoryguid" => "-1", "categoryname" => "默认分类");

右鞋左穿

怎么没人跟帖了了

顶起来

0 2009-11-10 19:03:45

只看TA 引用 举报 #18    得分 0

第29章、向表中添加一条记录【知识要点】   (1)添加记录 【问题提出】   学会了读取表中的内容,但表中的内容又是从哪来的?噢,对!是录进来的的,让我们一起看一下如果为客户表(Client)中添加一条记录。      回顾一下Client表的表结构。    【在线指导】   本章的核心是插入记录,主要通过INSERT INTO ……和Comm.ExecuteNonQuery()实现。    1、设

huangyunzeng2008

通过测试发现好像不经过order的话,select出来的顺序是随机的。
create table t_a(col_1 varchar2(1),col_2 varchar2(1));
----------------------------------
INSERT INTO t_a VALUES('2','2');
INSERT INTO t_a VALUES ('0','0');
INSERT INTO t_a VALUES('1','1');
COMMIT;
SELECT * FROM t_a;
此时得到的结果顺序是: 2,0,1
-----------------------------------
DELETE FROM t_a WHERE NAME='0';
COMMIT;
INSERT INTO t_a VALUES('3','3');
COMMIT;
SELECT * FROM t_a;
此时得到的顺序是 :2,1,3
-------------------------------
DELETE FROM t_a WHERE NAME='3' ;
COMMIT;
INSERT INTO t_a VALUES('3','3');
COMMIT;
SELECT *FROM t_a;
如果按生成顺序得到select的顺序的话应该是 2,1,3,但是此时得到的结果是 :2,3,1
--------------------------------
综上所述得到:select的顺序跟插入顺序是没有关系的。

0 2009-11-10 19:36:44

只看TA 引用 举报 #19    得分 10

数据库和java连接(eclipse)向users表中增加一条记录package cn.itcast.ch10.demo;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;/* * 向users表中增加一条记录 */public cl...

右鞋左穿

呵呵 不容易呀 
终于试出来不同的结果了啊
我也做过和你一样的实验
不过结果是SELECT顺序和插入顺序一样

没得出你的这种结果

0 2009-11-10 20:21:11

只看TA 引用 举报 #20    得分 0

archwuke1

这个有意义吗

以前用foxpro的时候,数据的插入是有顺序的
后来转到sqlserver这些大型的数据库后,教材里都是一直强调缺省的顺序无意义也不可靠

0 2009-11-10 20:59:54

只看TA 引用 举报 #21    得分 0

用sql语句查出的字段顺序 和 查完放入list里的顺序不一样 。。用sql语句查出的字段顺序 和 查完放入list里的顺序不一样 。。3我的sql语句字段位置是这样的....  select htbh, fbf, cbf, nian,yue, ri, qx_glq, qx_zyz, jbt_zw1 from .... 可是查出来放进list里以后 字段位置就不是这样了..  {jbt_zw1=水, yue=3, cbf=周鹏, qx_zyz=2, fbf=公司,...

碧水幽幽泉

 版主

   

学习中

ORACLE向表插入记录的顺序和读取记录的次序一样吗??相关推荐

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

    向表插入记录的顺序和读取记录的次序一样吗?? [问题点数:30分,结帖人wh62592855] 收藏帖子 回复 右鞋左穿 结帖率 100% SQL code? 1 2 3 4 5 6 7 8 9 10 ...

  2. oracle中如何加字母,Oracle数据库之oracle数据库表插入数据的时候如何产生一个字母+数字...

    本文主要向大家介绍了Oracle数据库之oracle数据库表插入数据的时候如何产生一个字母+数字,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle 语句中" ...

  3. Oracle 数据仓库 ETL 技术之多表插入语句

    文章目录 创建示例表 无条件的 INSERT ALL 语句 有条件的 INSERT ALL 语句 有条件的 INSERT FIRST 语句 多表插入语句的限制 大家好!我是只谈技术不剪发的 Tony ...

  4. 表的插入、更新、删除、合并操作_4_同时往多个表插入记录

    同时往多个表插入记录 需求描述 需求:从dept表里插入数据到3张表,当loc是NEW YORK和BOSTON时向dept_east表中插入,当当loc是CHICAGO时向dept_mid表中插入,其 ...

  5. 表的插入、更新、删除、合并操作_2_插入含自增列的记录

    插入含自增列的记录 需求描述 需求:向dept表中插入部门编号为50,部门名称为Production,部门位置为Shanghai的数据. 解决方法:这里通过INSERT INTO TableName ...

  6. 顺序表-插入一个元素x后保持该顺序表L递增有序排序(查找+元素后移插入)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 要保持插入一个元素后 ...

  7. 查询oracle表上重复的数据库,如何确定Oracle数据库表重复的记录

    正在看的ORACLE教程是:如何确定Oracle数据库表重复的记录. 作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示O ...

  8. Oracle数据库表中字段顺序的修改方法

    Oracle数据库表中字段顺序的修改方法 这篇文章主要给大家介绍了关于Oracle数据库表中字段顺序的修改方法,在介绍修改的方法之前先给大家介绍了Oracle数据库表新建字段的方法,文中通过示例代码介 ...

  9. oracle 表字段顺序_如何更改Oracle数据库表中字段顺序

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

最新文章

  1. Anaconda 使用的一些体验与困惑
  2. Facebook宕机背后,我们该如何及时发现DNS问题
  3. jvm系列(八):jvm知识点总览
  4. Linux 统计文件行数,字节数。
  5. 五步让你成为专家级程序员
  6. 七七计算机论文网,qepipnu
  7. PCI Express®Basics Background | PDF
  8. Android:Android SDK的下载与安装
  9. # 再次尝试 连接失败_新一代高效连接池HikariCP设计简要分析
  10. win8 性能测试软件,首款支持Win8性能测试 新版3D Mark使用体验
  11. 深入理解React、Redux
  12. 图像降噪:Scale-Space and Edge Detection Using Anisotropic Diffusion
  13. 代码整洁之道Clean Code笔记
  14. python 高等数学实验,高等数学以及Python 实现
  15. 写好作文批语,激发学生的写作兴趣
  16. U盘图标改变与文件隐藏
  17. Linux部署Tomcat踩的坑以及解决方案【8080无法访问、日志显示XX端口被占用、修改默认端口、无法提供安全连接】
  18. Java日志框架:Logback
  19. 配电房环境智能监测系统及轨道巡检机器人
  20. 2020年FRM考试有哪几门?占比是多少?

热门文章

  1. android自动获取位置,Android中获取当前位置信息
  2. 宋朝记载的超新星爆发和光速不变
  3. C语言库函数strstr查找字符串失败问题
  4. 要matlab标定数据做双目相机矫正OpenCV C++
  5. continue / break 跳出指定层循环
  6. 管理计算机找不到应用程序,电脑联网时显示找不到应用程序怎么办
  7. 【ML】评估一个分类器:精确率和召回率(Evaluation of Classifier)
  8. 仅用六句话制胜一场BAT群面的技巧
  9. C++ Type Trait
  10. 给STM32工程加入类似Arduino编程里的micros()、millis()函数