目标

通过本章学习,您将可以:

l  描述视图

l  创建和修改视图的定义,删除视图

l  从视图中查询数据

l  通过视图插入, 修改和删除数据

l  使用“Top-N” 分析

l  创建, 维护, 和使用序列

l  创建和维护索引

l  创建同义词

视图描述

l  视图是一种虚表.

l  视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。

l  向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.

l  视图向用户提供基表数据的另一种表现形式

为什么使用视图

l  控制数据访问

l  简化查询

l  避免重复访问相同的数据

创建视图

CREATE VIEW          empvu80

AS SELECT  employee_id, last_name, salary

FROM    employees

WHERE   department_id = 80;

修改视图

CREATE OR REPLACE VIEW empvu80

(id_number, name, sal, department_id)

AS SELECT  employee_id, first_name || ' ' || last_name,

salary, department_id

FROM    employees

WHERE   department_id = 80;

屏蔽 DML 操作

l  可以使用 WITH READ ONLY 选项屏蔽对视图的DML 操作

l  任何 DML 操作都会返回一个Oracle server 错误

CREATE OR REPLACE VIEW empvu10

(employee_number, employee_name, job_title)

AS SELECT         employee_id, last_name, job_id

FROM     employees

WHERE    department_id = 10

WITH READ ONLY;

Top-N 分析

查询工资最高的三名员工:

SELECT ROWNUM as RANK, last_name, salary

FROM  (SELECT last_name,salary FROM employees

ORDER BY salary DESC)

WHERE ROWNUM <= 3;

rownum“伪列”,数据表本身并没有这样的列,是oracle数据库为每个数据表“加上的”列,可以标识行号,默认情况下rownum按主索引来排序,若没有主索引则自然排序。

注意:对rownum只能使用<或<=,,而用=,>,>=都将不能返回任何数据。

使用rownum进行分页

select * from (

select rownum rn,e.*,from employees e

)

where rn>=(pageNum-1)*pageSize+1 and rn<=pageNum*pageSize

什么是序列?

序列: 可供多个用户用来产生唯一数值的数据库对象

l  自动提供唯一的数值

l  共享对象

l  主要用于提供主键值

l  将序列值装入内存可以提高访问效率

定义序列:

CREATE SEQUENCE sequence

[INCREMENT BY n]

[START WITH n]

[{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}]

[{CYCLE | NOCYCLE}]

[{CACHE n | NOCACHE}];

比如:

CREATE SEQUENCE dept_deptid_seq

INCREMENT BY 10

START WITH 120

MAXVALUE 9999

NOCACHE

NOCYCLE;

查询序列

l  查询数据字典视图 USER_SEQUENCES 获取序列定义信息

SELECT      sequence_name, min_value, max_value,

increment_by, last_number

FROM        user_sequences;

NEXTVAL 和 CURRVAL 伪列

l  NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用

l  CURRVAL 中存放序列的当前值

l  NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效

select dept_deptid_seq.nextval from dual;

SELECT      dept_deptid_seq.CURRVAL

FROM        dual;

序列应用:

INSERT INTO departments(department_id,

department_name, location_id)

VALUES      (dept_deptid_seq.NEXTVAL, //自增列

'Support', 2500);

修改序列

ALTER SEQUENCE dept_deptid_seq

INCREMENT BY 20

MAXVALUE 999999

NOCACHE

NOCYCLE;

删除序列

DROP SEQUENCE dept_deptid_seq;

索引

l  一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中

l  索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度

l  索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引. 用户不用在查询语句中指定使用哪个索引

l  在删除一个表时, 所有基于该表的索引会自动被删除

l  通过指针加速 Oracle 服务器的查询速度

l  通过快速定位数据的方法,减少磁盘 I/O

创建索引

CREATE INDEX         emp_last_name_idx

ON            employees(last_name);

什么时候创建索引

以下情况可以创建索引:

l  列中数据值分布范围很广

l  列经常在 WHERE 子句或连接条件中出现

l  表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%

什么时候不要创建索引

下列情况不要创建索引:

l  表很小

l  列不经常作为连接条件或出现在WHERE子句中

l  查询的数据大于2%到4%

l  表经常更新

删除索引

DROP INDEX upper_last_name_idx;

同义词

使用同义词访问相同的对象:

l  方便访问其它用户的对象

l  缩短对象名字的长度

创建和删除同义词

CREATE SYNONYM  d_sum

FOR  dept_sum_vu;

DROP SYNONYM d_sum;

oracle 10g 学习之视图、序列、索引、同义词(9)的更多相关文章

  1. Oracle入门基础(十)一一数据库其他对象-视图/序列/索引/同义词

    SQL> --视图 SQL> create view empinfoview as select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname ...

  2. oracle 10g 学习之创建和管理表(7)

    目标 通过本章学习,您将可以: l  描述主要的数据库对象. l  创建表. l  描述各种数据类型. l  修改表的定义. l  删除,重命名和清空表. 常见的数据库对象 表.视图.序列.索引.同义 ...

  3. Oracle学习总结_day06_视图&序列&索引

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day 06 视图,索引,序列 视图 什么是视图: 视 ...

  4. oracle 10g 学习之服务器端安装(1)

    Oracle 简介 lOracle 是殷墟出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词 lOracle 公司是全球最大的信息管理软件及服务供应商,成立于197 ...

  5. Oracle SQL Lesson (11) - 创建其他数据库对象(试图/序列/索引/同义词)

    schema(模式)一个用户下一组对象的集合,一般与用户名一致. 视图 CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias].. ...

  6. oracle 10g 学习之oracle管理(3)

    怎样将预先写好的sql脚本执行? select * from employees;→107条记录 利用 Oracle 企业管理器连接数据库服务器 点击打开以下界面: 此时已经连接成功了 用 Oracl ...

  7. oracle数据库表约束、视图、索引—该记录为本人以前微博的文章

    一.Oracle 数据库常用操作续关于创建表时创建约束1.创建表的时候增加约束----约束是定义表中的数据应该遵循的规则或者满足的条件----约束是建立在列上的,让某一列或者某几列数据之间有约束--- ...

  8. oracle 10g 学习之数据进行增删改查、数据库事务、约束(8)

    目标 通过本章学习,您将可以: l  使用 DML 语句 l  向表中插入数据 l  更新表中数据 l  从表中删除数据 l  控制事务 l  描述约束 l  创建和维护约束 数据控制语言 l     ...

  9. oracle 10g 学习之单行函数(5)

    目标 通过本章学习,您将可以: l  SQL中不同类型的函数. l  在 SELECT 语句中使用字符,数字和日期函数. l  描述转换型函数的用途. 字符函数 字符函数分为大小写控制函数和字符控制函 ...

随机推荐

  1. NetBeans快捷键的使用

    .Ctrl-Tab:在打开的文件之间切换: .Ctrl-N:在当前打开的项目里新建文件: .Ctrl-F:当前文件查找匹配的字符(支持正则): .Ctrl-H:当前文件查找.替换匹配的字符(支持正则, ...

  2. vagrant 启动错误

    Stderr: VBoxManage.EXE: error: Failed to create the VirtualBox object!VBoxManage.EXE: error: Code E_ ...

  3. 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)

    解题思路: 1.将分子量用double 数组记录下来 2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同 ...

  4. [工作积累] Google/Amazon平台的各种坑

    所谓坑, 就是文档中没有标明的特别需要处理的细节, 工作中会被无故的卡住各种令人恼火的问题. 包括系统级的bug和没有文档化的限制. 继Android的各种坑后, 现在做Amazon平台, 遇到的坑很 ...

  5. xss实例-输出在<script></script>之间的情况

    1. 我们找到这么一个点,也是输入和输出都未过滤的一个点.相比教程第一例,其特殊之处在于,是输出在了 <script>[输出]</script>之间. http://activ ...

  6. gnl总结(#,%,$)

    Ognl表达式struts标签“%,#,$” 1.什么是Ognl? OGNL(Object-Graphic Navigation Language),对象图道行语言.是一种可以方便操作对象属性的开源表 ...

  7. mappedBy reference an unknown target entity property解决方法

    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error ...

  8. JavaScript 中 for in 循环和数组的问题

    本文由 伯乐在线 - ElvisKang 翻译,进林 校稿.未经许可,禁止转载!英文出处:adripofjavascript.com.欢迎加入翻译小组. JavaScript的for…in循环用于迭代 ...

  9. 多线程 or 多进程 (转强力推荐)

    在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在C/S通讯中服务端并发技术 的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进 ...

  10. Nmap备忘单:从探索到漏洞利用 Part1

    在侦查过程中,信息收集的初始阶段是扫描. 侦查是什么? 侦查是尽可能多的收集目标网络的信息.从黑客的角度来看,信息收集对攻击非常有帮助,一般来说可以收集到以下信息: 电子邮件.端口号.操作系统.运行的 ...