为什么新插入的行显示在oracle数据库12c中的表的顶部..?

时间:2016-10-23 17:07:06

标签: oracle oracle-sqldeveloper oracle12c

在我使用MS SQL Server之前,最近搬到了Oracle。

我创建了将数据插入到oracle表的java应用程序,但那些插入数据的人显示在表的顶部不在底部,而不是像SQL Server。我想将它插入表格的底部。我怎么能这样做..?

Please refer to this Screenshot. 正如您所看到的那样,用户表由用户ID组成,该用户ID由java应用程序自动增加。

我知道如何使用SQL开发人员对数据进行排序,但我需要修复此默认保存样式,因为我创建的应用程序将“U002”作为最后一条记录。

2 个答案:

答案 0 :(得分:0)

嗯,简单的表结构是堆。如果您创建表而不指定type - 它在公共堆表中。它的意思是可以在任何自由表空间中插入新行(实际上,有一些规则,但现在我们可能会忘记它)。这意味着您无法预测新行将在select的输出中的位置而不进行排序。 如果要对结果进行排序,则应指定 order by 子句。

select * 
  from user_tbl 
 order by userid

答案 1 :(得分:0)

只是一个简单的例子,看看你没有ORDER没有订单:

SQL> create table unsortedTable(a number, b varchar2(1000));

Table created.

SQL> insert into unsortedTable
  2  select level, lpad('X', 1000, 'X')
  3  from dual
  4  connect by level <=10;

10 rows created.

SQL> delete unsortedTable where a between 4 and 5;

2 rows deleted.

SQL> insert into unsortedTable
  2  select -level, lpad('Y', 1000, 'Y')
  3  from dual
  4  connect by level <=4;

4 rows created.

SQL> select a, substr(b, 1, 5)
  2  from unsortedTable;

         A SUBSTR(B,1,5)
---------- --------------------
         1 XXXXX
         2 XXXXX
         3 XXXXX
         6 XXXXX
         7 XXXXX
        -1 YYYYY
        -2 YYYYY
         8 XXXXX
         9 XXXXX
        10 XXXXX
        -3 YYYYY
        -4 YYYYY

12 rows selected.

SQL>

相同的操作序列,在第二个/*+ append */语句中添加insert提示将给出:

SQL> select a, substr(b, 1, 5)
  2  from unsortedTable;

         A SUBSTR(B,1,5)
---------- --------------------
         1 XXXXX
         2 XXXXX
         3 XXXXX
         6 XXXXX
         7 XXXXX
         8 XXXXX
         9 XXXXX
        10 XXXXX
        -1 YYYYY
        -2 YYYYY
        -3 YYYYY
        -4 YYYYY

12 rows selected.

请注意,这并不意味着APPEND为您提供可靠的方式或订购。