【问题标题】:Why Newly Inserted Row Displaying at the Top of the table in oracle databse 12c..? [duplicate]为什么在 oracle 数据库 12c.. 的表顶部显示新插入的行? [复制]
【发布时间】:2016-10-23 17:07:05
【问题描述】:

在我使用 MS SQL Server 并最近转移到 Oracle 之前。

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

Please refer to this Screenshot. 如您所见,用户表由 java 应用程序自动递增的用户 ID 组成。

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

【问题讨论】:

  • 它们就是这样显示的。显示什么交易。添加Order by 以按正确顺序获取它
  • 关系数据库中的表是按照 ANSI SQL 关系数据库概念的一组无序行。因此,没有第一个、最后一个、顶部或底部。 SQL ORDER BY 子句是保证结果集排序所必需的。没有ORDER BY,返回的行序列是不确定的。

标签: oracle oracle-sqldeveloper oracle12c


【解决方案1】:

嗯,简单的表结构就是堆。如果您创建表而不指定类型 - 它在公共堆表中。这意味着可以在任何空闲表空间中插入新行(确实,有一些规则,但现在我们可能会忘记它)。这意味着您无法在不排序的情况下预测新行将在 select 输出中的位置。 如果你想对结果进行排序,你应该指定一个 order by 子句。

select * 
  from user_tbl 
 order by userid

【讨论】:

    【解决方案2】:

    只是一个简单的例子,看看你没有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>
    

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

    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 可以为您提供可靠的方式或订购方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 2016-04-08
      • 2015-10-04
      相关资源
      最近更新 更多