Oracle默认排序规则是什么?

您所在的位置:网站首页 地质图案排序规则是什么 Oracle默认排序规则是什么?

Oracle默认排序规则是什么?

2024-07-03 18:36| 来源: 网络整理| 查看: 265

问题

在不加 order by 的情况下,oracle 的默认排序规则是什么? — 按 ROWID 伪列递增排序。

示例:

SELECT ROWID, S.* FROM DEPT S;

在这里插入图片描述 ROWID 是按序递增生成的,唯一标识一条记录的物理位置。

ROWID 的组成部分:

-- AAAR3q AAE AAAACH AAA -- 数据对象编号+文件编号+块编号+行编号 ROWID 的其它作用 plsqldev 中检索出数据后更新

在 plsqldev 或其它客户端工具中,一般在 select 后面加 for update ,对检索出的数据进行可视化更新,但其实将 ROWID 作为检索字段也可以达到相同的目的。

ROWID 虽然可以通过表检索,但不存表里面(所以是伪列,和 ROWNUM 一样),所以不支持删、改操作。

SELECT S.* FROM DEPT S FOR UPDATE; SELECT ROWID, S.* FROM DEPT S; 删除重复数据,保留一笔

既然 ROWID 唯一标识一条记录,自然可以用来删除重复数据。

先造个数据:

CREATE TABLE DEPT_REPEAT AS (SELECT * FROM DEPT); INSERT INTO DEPT_REPEAT (SELECT * FROM DEPT); SELECT ROWID, S.* FROM DEPT_REPEAT S ORDER BY S.DEPTNO;

在这里插入图片描述 这 ROWID 的生成也挺有意思的,两条重复数据,就块编号不一样。

如果要按 DEPTNO、DNAME、LOC 把 ROWDID 小的记录删除的话:

DELETE FROM DEPT_REPEAT S WHERE S.ROWID IN (SELECT MIN(T.ROWID) FROM DEPT_REPEAT T GROUP BY T.DEPTNO, T.DNAME, T.LOC);

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3