加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle学习一

发布时间:2020-12-12 15:37:33 所属栏目:百科 来源:网络整理
导读:学习记录使用oracle语句,以备查询。 修改表结构: - 1、修改表中字段可以为空 ALTER TABLE [表名] MODIFY [表字段] NULL 2、修改表中字段名 ALTER TABLE [表名] rename column [ 旧名] to [新名] ORACLE SEQUENCE - 创建sequence create sequence [序列名]

学习记录使用oracle语句,以备查询。

修改表结构:
- 1、修改表中字段可以为空

ALTER TABLE [表名] MODIFY [表字段] NULL

2、修改表中字段名

ALTER TABLE [表名] rename column [ 旧名] to [新名]

ORACLE SEQUENCE
- 创建sequence

create sequence [序列名]
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

CREATE SEQUENCE MESSAGE_ALL_LOG_ID_SEQ
MINVALUE 1
NOMAXVALUE
INCREMENT BY 1
START WITH 1
NOCACHE

rownum与rowid

虽然rownum和rowid都是oracle数据库中的伪列,但是二者之间还是存在根本的差别的。它们的存在方式不同:
(1)rowid是物理存在的,表示记录在表空间中的唯一位置id,在数据库中是唯一的,rowid相对于表来说就像表中的一般列。
(2)rownum是一个序列,是oracle数据库从数据文件或数据缓存区中读取数据的顺序。

鉴于rownum的特殊之处,下面对几种现象进行说明。

1、 select rownum,t.* from DEVICEINFO t where rownum!=10为何返回的是前9条数据?
select rownum,t.* from DEVICEINFO t where rownum<10返回的也是前9条数据

因为rownum为9后,取的记录的rownum为10,因条件为 !=10,所以删掉。然后取下一条,其rownum又是10,也删掉。以此类推,所以只会显示前面9条记录。

2、为什么rownum >1时查不到一条记录,而 rownum >0或rownum >=1 却总显示所有记录

这是因为rownum是在查询到的结果集后,再加上去的,它总是从1开始的。

3、为什么 select rownum,t.* from DEVICEINFO t where rownum between 0 and 10或者between 1 and 10都能查询到前10条数据,而between 2 and 10什么都查不到?

因为rownum都是从1开始,参考上面的1理解。

从上面的可知,任何时候想把rownum = 1这条记录抛弃是不对的。它在结果集中是不可或缺的。 少了rownum=1就像空中楼阁一般不能存在。所以,rownum条件要包含到1。

oracle分页

根据上面对rownum、rowid的理解。将其运用到分页中,
下面运用到的表DEVICEINFO,表结构的部分字段如下:

SELECT * FROM DEVICEINFO WHERE ROWID IN (SELECT RID FROM (SELECT ROWNUM RN,RID FROM (SELECT ROWID RID,EMPNO FROM DEVICEINFO ORDER BY SERIALNO DESC) WHERE ROWNUM <= ( (currentPage-1) * pageSize + pageSize )) --每页显示几条 WHERE RN > ((currentPage-1) * pageSize) ) --当前页数 ORDER BY SERIALNO DESC;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读