Oracle

发布于:2024-04-26 ⋅ 阅读:(29) ⋅ 点赞:(0)

第一节.Oracle的概述

  Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

第二节.Oracle的特殊点

2.1.查询语法

select [TOP|DISTINCT] [选择列表]|[*]
from 数据源
[where 查询条件]
[group by 分组条件]
[having 过滤条件]
[order by 排序条件 asc|desc nulls first|last];

2.2.查询次序

5select [5-3TOP|5-2DISTINCT]5-1[选择列表]|[*]1from 数据源
(2[where 查询条件]3[group by 分组条件]4[having 过滤条件]6[order by asc|desc nulls first|last];

1.学习Oracle这一篇就够了

2.3.分页查询

ORACLE中提供了一个伪列:ROWNUM。ROWNUM字段不存在于任何一张表中,但是每张表都可以查询该字段。该字段的值是结果集中每条记录的行号。ROWNUM字段的值是伴随查询过程动态生成的。只要可以查询出一条记录,ROWNUM就会为该条记录生成行号,从1开始每次递增1。

  • 错误用法
select rownum,empno,ename,sal,job from emp 
where rownum between 6 and 10;

由于ROWNUM是在查询表的过程中进行编号的,在上面的例子中,ROWNUM并不会记录编号,所以上述语句的结果不会查询出任何结果。

select * from   
    (select rownum,empno,ename,sal,job from emp) 
where rownum between 6 and 10;

上述语句也是无结果,WHERE子句中的ROWNUM被视为主查询的ROWNUM,并不是子查询中的ROWNUM,应该给子查询的ROWNUM添加别名:

  • 正确用法
select * from
    (select rownum rn,empno,ename,sal,job from emp)
where rn between 6 and 10;

2.4.序列

序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。。

2.4.1.参数介绍

create sequence 序列名称
start with 从几开始
increment by 每次增长多少
[maxvalue 最大值] | nomaxvalue
[minvalue 最小值] | nominvalue
cycle | nocycle --是否自动循环
[cache 缓存数量] | nocache;
  • increment by表示步长,默认为1,负值表示递减。
  • start with序列初始值,默认为1。
  • maxvalue序列产生最大值,默认为NOMAXVALUE,表没有最大,递减序列最大值为-1。
  • minvalue 序列产生最小值,默认为NOMAXVALUE,表没有最小值,递增序列最小值为1。
  • cycle 表循环,NOCYCLE表示不循环;使用循环,当增至最大值时,循环到最小值;对于递减序列,当减至最小值时,循环至最大;若不循环,当到达极限值后,报错。
  • cache 表示使用内存缓存,内存块大小默认为20;NOCACHE表示不使用内存缓冲。对序列进行内存缓冲,可以改善序列的性能。注意:大量语句发生请求,申请序列时,为了避免序列在运用层实现序列而引起的性能瓶颈。Oracle序列允许将序列提前生成 cache x个先存入内存,在发生大量申请序列语句时,可直接到运行最快的内存中去得到序列。但cache个数也不能设置太大,因为在数据库重启时,会清空内存信息,预存在内存中的序列会丢失,当数据库再次启动后,序列从上次内存中最大的序列号+1 开始存入cache x个。会导致序列号不连续。
  • NEXTVAL返回序列下一个有效值,任何用户都可以引用。
--在向表中插入数据时调用nextval方法生成主键
insert into 表名 values (序列名.nextval,值1,值2...;

2.5.查看执行计划

不同于MySQL直接使用explain查看执行计划,oracle使用:

--生成执行计划
explain plan forsql语句】;
--查看索引使用明细
select * from table(dbms_xplan.display);