我对oracle非常陌生,我需要按上次修改时间对表进行排序。我猜它叫做DML,但我不确定。抱歉,是之前问过的还是无法做到的。
编辑: 我正在尝试从停产的应用程序中获取一些数据。但是此数据库中有600多个表。应用程序仍使用此数据库。因此,如果我在应用程序中进行一些更改。例如,我可以授予用户一些权限。然后,我将运行要查找的SQL,并在结果顶部看到一个被修改的表(内部数据)。因此,我将了解哪个表包含哪些数据。对不起,我的英语。
答案 0 :(得分:1)
如果要查找DML修改:
select * from SYS.ALL_TAB_MODIFICATIONS where TABLE_OWNER = 'YOUR_SCHEMA_NAME' order by TIMESTAMP;
如果您正在寻找DDL修改:
select * from SYS.ALL_OBJECTS where OWNER = 'YOUR_SCHEMA_NAME' and OBJECT_TYPE = 'TABLE' order by LAST_DDL_TIME;
如果您只想对表格中的数据进行排序:
select * from YOUR_TABLE order by COLUMN_NAME; -- or multiple column names
答案 1 :(得分:1)
您能解释一下您的真正意思吗?
什么是“排序表”?您对表中的数据进行排序,而不对表本身进行排序,除非您要查询(例如)USER_OBJECTS,并且希望按LAST_DDL_TIME(该表最后一次被修改(更改)的时间)对架构中的表进行排序。例如:
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select object_name, last_ddl_time
2 from user_objects
3 where object_type = 'TABLE'
4 order by last_ddl_time;
OBJECT_NAME LAST_DDL_TIME
------------------------------ -------------------
SALGRADE 19.04.2018 08:15:27
DEPT 10.12.2018 08:58:24
EMP 10.12.2018 08:58:25
BONUS 17.12.2018 07:11:10
EMPLOYEES 20.12.2018 08:32:22
如果要对表中的行进行排序,则:
SQL> select empno, ename, hiredate
2 from emp
3 order by hiredate;
EMPNO ENAME HIREDATE
---------- ---------- -------------------
7369 SMITH 17.12.1980 00:00:00
7499 ALLEN 20.02.1981 00:00:00
7521 WARD 22.02.1981 00:00:00
7566 JONES 02.04.1981 00:00:00
如果还有其他东西,那是什么?