目标

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

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. stl 迭代器(了解)

    STL 主要是由 containers(容器),iterators(迭代器)和 algorithms(算法)的 templates(模板)构成的. 对应于它们所支持的操作,共有五种 iterators ...

  2. Laravel教程 三:视图变量传递和Blade

    Laravel教程 三:视图变量传递和Blade 此文章为原创文章,未经同意,禁止转载. Blade 上一篇我们简单地说了Router,Views和Controllers的工作流程,这一次我就按照上一 ...

  3. vagrant 启动错误

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

  4. memcache 开发版

    memcache安装,如果是用xampp,一定要下载开发版本 解压开发包,将其中的include目录复制到应用的lampp目录下 tar -zxvf xampp-linux-devel-1.7.2.t ...

  5. 用 xampp 在 windows/Linux 下搭建代理服务器

    背景:学校上网开始收费,但实验室免费,由于宿舍和实验室都有ipv6,所以在实验室搭建代理服务器,让宿舍通过之上网. Windows下 两步: 1.编辑httpd.comf,去掉关于proxy的注释 L ...

  6. Hibernate3的DetachedCriteria支持

    Hibernate3支持DetachedCriteria,这是一个非常有意义的特性!我们知道,在常规的Web编程中,有大量的动态条件查询,即用户在网页上面自由选择某些条件,程序根据用户的选择条件,动态 ...

  7. angular-ngSanitize模块-linky过滤器详解

    本篇主要讲解angular中的linky这个过滤器.此过滤器依赖于ngSanitize模块. linky能找出文本中的链接,然后把它转换成html链接.什么意思,就是说,一段文本里有一个链接,但是这个 ...

  8. #iPhone6与iPhone6Plus适配#如何在Xcode 6中创建 PCH 文件

    本文永久链接http://www.cnblogs.com/ChenYilong/p/4008086.html   新建文件 ⌘+N选择 iOS/Mac -> Other -> PCH Fi ...

  9. 微信红包中使用的技术:AA收款+随机算法

    除夕夜你领到红包了吗?有的说“我领了好几K!”“我领了几W!” 土豪何其多,苦逼也不少!有的说“我出来工作了,没压岁钱了,还要发红包”.那您有去抢微信红包吗?微信群中抢“新年红包”春节爆红.618微信 ...

  10. zstu.4189: 逻辑运算(构建 && 前缀表达式入门)

    4189: 逻辑运算 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 274  Solved: 42 Description 还记得大学里学过的模电么, ...