在我使用MS SQL Server之前,最近搬到了Oracle。
我创建了将数据插入到oracle表的java应用程序,但那些插入数据的人显示在表的顶部不在底部,而不是像SQL Server。我想将它插入表格的底部。我怎么能这样做..?
Please refer to this Screenshot. 正如您所看到的那样,用户表由用户ID组成,该用户ID由java应用程序自动增加。
我知道如何使用SQL开发人员对数据进行排序,但我需要修复此默认保存样式,因为我创建的应用程序将“U002”作为最后一条记录。
答案 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
为您提供可靠的方式或订购。