当前位置:首页 >> 教学案例/设计 >>

索引、序列和同义词


Oracle 10g数据库应用教程

授课教师: 职务:

第5章 使用其它方案对象
课程描述

介绍Oracle数据 库常用对象的管 理方法。包括序 列管理、索引管 理、视图管理和 同义词管理等。

本章知识点

? ? ? ?

序列管理 索引管理 视图管理 同义词管理

7.5
? ? ? ? 创建序列 修改序列 删除序列 序列的使用

序列管理

序列概念
?序列(SEQUENCE)是一数据库对象,利用它可生 成唯一的整数,最多可有38个数字。 ?在oracle中sequence就是所谓的序列号。 ?序列的作用是自动生成整型数值,作为表中标识 字段的值 ?标识字段的值由系统自动生成,每插入一条新记 录,此字段的值自动加1(默认)。

创建序列
? 建立序列命令 CREATE SEQUENCE [user.]sequence_name [increment by n] [start with n] [maxvalue n | nomaxvalue] [minvalue n | nominvalue]; 其中:
INCREMENT BY: 指定序列号之间的间隔,该值可为正的或负的整数, 但不可为0。序列为升序。忽略该子句时,缺省值为1。 START WITH:指定生成的第一个序列号。在升序时,序列可从比最小值 大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小 的值开始,缺省值为序列的最大值。 MAXVALUE:指定序列可生成的最大值。 NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。 MINVALUE:指定序列的最小值。 NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。

创建序列
? CREATE SEQUENCE语句创建序列。
【例】创建序列SEQ_USERS_USERID: CREATE SEQUENCE SEQ_USERS_USERID MINVALUE 1--序列的最小值为1 NOMAXVALUE--序列没有最大值限制 START WITH 1--序列的初始值为1 INCREMENT BY 1--序列间隔为1 NOCYCLE—不循环生成序列值 CACHE 20;--高速缓存大小为20

序列的使用
?得到序列的新值:
SEQ_USERS_USERID.NEXTVAL

?创建表
CREATE TABLE Users1 (UserId Number, Tel Varchar2(15) );

?例如,向表USERS中插入一个新的记录:
INSERT INTO USERS1(USERID, Tel) VALUES(SEQ_USERS_USERID.NEXTVAL,’0413-6618030’);

序列的使用
?序列号的生成独立与表,所以,同一序列生 成器可用于一个或多个表。所生成的序列号可 用于生成唯一的主键。
?创建表
CREATE TABLE Users2 (UserId Number, Tel Varchar2(15) );

?例如,向表USERS中插入一个新的记录:
INSERT INTO USERS2 (USERID, TEL) VALUES(SEQ_USERS_USERID,’0413-6618030’); //再向USERS1表中插值 INSERT INTO USERS1 (USERID, TEL) VALUES(SEQ_USERS_USERID,’0413-6618030’);

更改序列
?ALTER SEQUENCE [user.]sequence_name [INCREMENT BY n] [MAXVALUE n| NOMAXVALUE ] [MINVALUE n | NOMINVALUE]; 修改序列可以: 1、修改未来序列值的增量。 2、设置或撤消最小值或最大值。 3、改变缓冲序列的数目。 4、指定序列号是否是有序。

更改序列
?更改序列SEQ_USERS_USERID,设置序列的增 量为2,最大值为100,可循环。 ALTER SEQUENCE SEQ_USERS_USERID INCREMENT BY 2 MAXVALUE 100 CYCLE;

删除序列
?删除序列命令 DROP SEQUENCE [user.]sequence_name ; ?【例】删除序列SEQ_USERS_USERID :
DROP SEQUENCE SEQ_USERS_USERID;

创建序列
?序列管理页面

搜索序列

序列基本 信息

创建序列

创建序列
?创建序列页面

修改序列
?编辑序列

删除序列
?确认删除页面

7.4
? ? ? ? ? 索引的概念 索引管理页面 创建索引 修改索引 删除索引

索引管理

索引的概念
?UserName索引的存储和工作情况
Users 表 UserName UserName 索引 Admin Lee User Admin UserId UserPwd 2 Admin ……

……

1

111111

User

索引是对数据库表中一个或多个列的值进行排序的结构. 索引提供指针指向存储在表中指定列的数据值 利用索引可以快速访问数据库表中的特定信息

…… ……

Lee

……

4

111111

索引的概念

? 使用索引可快速访问数据库表中的特定信息。 ? 索引是对数据库表中一列或多列的值进行排序的一种 结构,索引提供指向存储在表的指定列中的数据值的 指针,然后根据指定的排序顺序对这些指针排序。搜 索索引以找到特定值,然后顺指针找到包含该值的行。 ? 索引需要存储空间。在插入、更新和删除表中数据的 时候,数据库将自动维护索引。 ? 作为通用规则,只有当经常查询索引列中的数据时, 才需要在表上创建索引。索引占用磁盘空间,并且降 低添加、删除和更新行的速度。在多数情况下,索引 用于数据检索的速度优势大大超过它的。

创建索引
? 创建表
CREATE TABLE Users2 (UserId Number, Tel Varchar2(15) );

? CREATE INDEX语句创建索引。 【例】为表Users的列UserId创建索引,索引名为 index_userid: CREATE INDEX index_user1_userid ON Users2(UserId)

? 查看用户创建的索引。
Select index_name,table_name from user_indexes

创建索引
?创建主键索引:在创建表的时候,使用PRIMARY KEY关 键词指定主键列。 CREATE TABLE Users1 (UserId Number Primary Key, Tel Varchar2(15) );

CREATE PRIMARY KEY INDEX index_users1_tel ON Users1(userid);

创建索引
?创建惟一索引:使用CREATE UNIQUE INDEX。

【例】为表Users1的列Tel创建索引,索引名为 index_users1_tel(确认Tel列没有重复值) CREATE UNIQUE INDEX index_users2_tel ON Users2(Tel); ?创建表时,使用UNIQUE关键词指定惟一索引。 CREATE TABLE Users2 (UserId Number Primary Key, Tel Varchar2(15) NOT NULL UNIQUE );

修改索引
? ALTER INDEX语句可以修改索引。
【例】设置索引index_user_tel不可用: ALTER INDEX index_users1_tel UNUSABLE;

?ALTER INDEX中使用REBUILD关键词可重新使用索引 index_users1_tel :
ALTER INDEX index_users1_tel REBUILD;

?RENAME TO子句可以重命名索引。
【例】将索引名index_users1_tel重命名为index_users1: ALTER INDEX index_users1_tel RENAME TO index_users1;

删除索引
?当索引不在需要时,删除,回收使用空 间。 ?语句:
【例】将索引名index_users1_tel重命名为 index_users1: DROP INDEX index_users1

索引管理页面
?索引管理页面

创建索引
?创建索引页面

1.输入索引 名称,选择方 案和表空间

2.选择表

3.置入列

4.设置排序 和顺序

创建索引
?索引选项页面

保存

选择索引 类型

选择执行 选项

删除索引
? DROP INDEX语句删除指定索引。
【例】删除索引index_users1: DROP INDEX index_users1;

单击此按钮 确认删除索引

视图管理
? ? ? ? ? 视图的基本概念 视图管理页面 创建视图 修改视图 删除视图

视图的基本概念
?视图是原始数据库数据的一种变换,是查看 表中数据的另外一种方式。可以将视图看成 是一个移动的窗口,通过它可以看到感兴趣 的数据。 ?视图是从一个或多个实际表中获得的,这些 表的数据存放在数据库中。那些用于产生视 图的表叫做该视图的基表。一个视图也可以 从另一个视图中产生。视图的定义存在数据 库中,与此定义相关的数据并没有再存一份 于数据库中。通过视图看到的数据存放在基 表中。

视图的基本概念
? 视图是一个虚拟的表,在物理上并不存在. ? 视图可以看成是一个存储的查询,可以限制用户能 看到和能修改的数据. ? 视图并不包含数据,只是从基表中读取数据 ? 视图特点
1. 着重于特定数据,增强数据的安全性 2. 简化数据操作:每次生成报表时无需写或提交基础查询, 只是查询视图. 3. 自定义数据:允许用户以不同的方式查看数据 4. 组合分区数据:将不同表的数据组合成单一的结果集

视图管理页面
?视图管理页面

搜索视图

视图基本信息

创建视图
?“创建视图向导”窗口

选中此复选框, 如果覆盖同名视图

单击此图标, 可以选择方案

单击“确定” 按钮保存

输入SQL语句

创建视图
? CREATE VIEW语句创建视图:
create [or replace] [force | noforce] view [user.] view_name [column1[, column2]…] as query [with check option [constraint constraint_name] [with read only] 其中: or replace:表示如果同名的视图存在,则使用新视图替代已有的视图 Force:强制创建视图,不考虑基表是否存在以及是否具有使用基表数据的权限 Noforce:只有基表存在并具有权限才可以创建视图 User:创建视图的用户名 view_name:视图名 Column:指定视图中的列名 Query:生成视图的select语句 with check option:指定检查通过视图修改数据的操作 constraint_name:指定的约束名称 with read only:表示创建的视图只能检索数据,不能修改数据

创建视图
?【例】创建员工信息视图V_EMP:
? Conn sys/oracle as sysdba

? 授予用户创建视图的权限 ? GRANT CREATE VIEW TO SCOTT;
? Conn scott/oracle;

? 创建视图 CREATE VIEW users_view(id,name,newsalary) AS SELECT userid,username,salary*1.1 From users;

创建视图
?查看用户定义的视图
Select view_name from user_views

?查看视图定义
Select view_name,text From user_views Where view_name=‘USERS_VIEW’;

?查看视图结构
? Desc users_view

修改视图
?在CREATE VIEW语句中增加OR REPLACE子句, 修改视图的定义。 ?如果要在users_view中增加一列
create or replace View users_view(id,name,type,newsal) As SELECT userid,username,usertype,salary*1.1 From users;

修改视图
?编辑视图页面

单击“确定” 按钮保存

修改SQL语句

删除视图
?DROP VIEW语句删除指定视图。
【例】删除视图HR.V_EMP:
DROP VIEW users_view;

单击此按钮 确认删除索引

视图中的约束
?视图不仅可以限制能够看到的列,还可以限制 可以返回的行 ?创建薪水超过2500的用户的视图
CREATE VIEW users_view(id,name,sal) AS SELECT userid,username,salary From users Where salary>2500;

连接视图
?基于多个基表的视图
? ? ? ? ? ? Create view usertype_view As Select u.username,t.typename From users u,uesertype t Where u.usertype=t.typeid With read only—只读(即不能此视图执行insert、 update或delete)

验证视图
?以下操作将导致视图无效
? 改变列名,或从基本表或视图中完全删除列 ? 删除构建视图的基本表或视图 ? 改变基本表或视图,使其无效,将导致视图无效

?使视图由无效变为有效的方法
? 使用alter view view_name compile命令重新编 译视图 ? 使用create or replace view命令重新创建视图 ? 修正视图所基于的基本表或视图

验证视图
?【例】修改基表,致使视图无效,重新编译 基表,使其有效
? 查询视图的状态
? Select object_name,status ? From user_objects ? Where object_name=‘USERS_VIEW’; ? 结果为: ? valid(有效)

? 修改基表users
? Alter table users ? Modify(username varchar2(50));

验证视图
? 使视图有效
? Alter view users_view ? Compile;

? 查询视图的状态
? Select object_name,status ? From user_objects ? Where object_name=‘USERS_VIEWs’; ? 结果为: ? valid(无效)

强制创建视图
? 当创建视图时,ORACLE会验证视图的有效性 ? 使用FORCE选项定义视图,无论视图是否有效 ? 创建基表不存在的视图
? ? ? ? ? ? ? ? ? ? Create force view invalid_view As Select * From table_not_exist 查看 Select view_name from user_views 查看视图状态 Select object_name,status From user_objects Where object_name=‘INVALID_VIEW’

? 创建此类视图的原因
? 基表由A创建,而视图由B创建,使B的工作不依赖于A ? 用户想在一个没有select权限的表上创建视图

修改视图数据
?视图看上去非常象数据库的物理表,对它 的操作同任何其它的表一样。当通过视图 修改数据时,实际上是在改变基表中的数 据;相反地,基表数据的改变也会自动反 映在由基表产生的视图中。由于逻辑上的 原因,有些视图可以修改对应的基表,有 些则不能(仅仅能查询)。

通过视图更新数据
?通过视图修改用户编号
? Update users_view ? Set userid=8 ? Where userid=2

?通过视图修改用户工资,必须满足指定 的约束条件
? Update users_view ? Set salary=800 ? Where userid=2

同义词概念
?欲查询users表中的内容 ? conn sys/orcl as sysdba; 已连接。 ? select * from users; 未选定行 ? select * from userman.users;

同义词的基本概念
? 同义词是数据库方案对象的一个别名,经常用于简 化对象访问和提高对象访问的安全性。 ? 在使用同义词时,Oracle数据库将它翻译成对应方 案对象的名字。 ? 与视图类似,同义词并不占用实际存储空间,只有 在数据字典中保存了同义词的定义。 ? 优点:
? 应用程序开发可以不管数据库的具体对象名 ? 避免应用程序直接访问数据库对象,提高数据库安全性。

同义词管理页面
?同义词管理页面

搜索同义 词

同义词基本信息

创建同义词
?“创建同义词”窗口

创建同义词
? CREATE SYNONYM语句创建同义词:
create [public] synonym synonym_name for object_name;
其中: public :定义所创建的同义词是否为公共的 synonym_name :所创建的同义词名称 object_name :需要创建同义词的名称

创建同义词
?【例】创建userman.users1的同义词syn_users:

create public synonym syn_users for userman.users1;
?使用同义词查看userman.users1表结构

? desc syn_users
?使用同义词查看userman.users1表数据

? select * from syn_users;

修改同义词
?修改同义词的定义 create [replace synonym] synonym_name for object_name; 其中: synonym_name:需要修改的同义词名称 object_name:定义需要创建同义词的对象
? 修改同义词syn_users,使其代表userman.users2

create synonym syn_users for userman.users2;

删除同义词
?DROP VIEW语句删除指定同义词。 【例】删除同义词syn_users; :

DROP public synonym syn_users;

小结
? Oracle提供了许多方案对象,如序列、索引、 视图、同义词等,支持对数据库的管理与开 发。 ? 序列主要用于提供主键值; ? 索引用于提高查询性能; ? 视图类似于表,但不需要提供存储开销。


相关文章:
序列、索引、同义词_图文.ppt
使用同义词为一个数据库对象取一个别名. 作业概览 创建一个序列 使用序列 创建一个非唯一索引 获取并展示关于序列和索引的数据字典信息 丢弃索引...
索引、序列和同义词_图文.ppt
索引序列和同义词 - 超级好的资料,保证是精品文档... 索引序列和同义词_教学案例/设计_教学研究_教育专区。超级好的资料,保证是精品文档 Oracle 10g数据库应用...
第13讲 使用视图、索引、序列和同义词...ppt
2018年10月5日星期五 Oracle数据库原理与应用 计算机(软件)学院 第13讲使用视图、索引序列 和同义词对象主讲:郭永洪 E-mail:yh_guo@126.com 2018年10月5日...
索引、序列和同义词_图文.ppt
索引序列和同义词 - Oracle 10g数据库应用教程 授课教师: 职务: 第7章 课程描述 数据库对象管理 介绍Oracle数据 库常用对象的管 理方法。包括序 列管理、索引...
创建视图、序列、索引和同义词.txt
创建视图、序列索引和同义词_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 创建视图、序列索引和同义词_计算机软件及应用_IT/...
第9章 视图、索引、序列、同义词.ppt
第9章 视图、索引序列同义词_理学_高等教育_教育专区。视图、索引序列同义词本讲大纲: 1、视图对象 2、索引 3、序列 4、同义词 创建视图创建视图是...
Orcl5(索引、序列、同义词、簇)_图文.ppt
(序列) 相关数据字典视图: DBA_SEQUENCES USER_SEQUENCES ALL_SEQUENCES select * from USER_SEQUENCES; SYNONYM(同义词) 同义词是表、索引、视图、过程、函数、...
7.索引-视图-序列-同义词剖析.ppt
7.索引-视图-序列-同义词剖析 - 广州大学华软软件学院 软件工程系 第七章索引-视图-序列-同义词 在Oracle中,索引是除表之外另一个重要的 模式对象,索引主要...
Oracle数据库管理第9章 视图、索引、序列、同义词.ppt
? ? ? 掌握视图对象的创建和管理 掌握索引对象的创建和维护 掌握序列对象的创建和管理 了解同义词对象 第9 章 主要内容 视图、索引序列同义词 1.视图对象 ...
Oracle序列、视图、索引、同义词管理.ppt
Oracle序列、视图、索引同义词管理 - 序列、视图、索引管理 什么是序列 Oracle中的序列是按照某种模式自动生成整数的一种机制。 ? ? ? ? ? ? 序列具有名称,...
课堂练习 - 索引、序列、同义词.doc
课堂练习 - 索引、序列同义词 - 1、 单列索引复合索引的主要区别是什么? 单列索引对一个列加入索引,如果加入了主键约束,则自动追加索引 复合索引是多列...
SQL 第9课 索引、序列、同义词、数据字典_图文.ppt
SQL 第9课 索引序列同义词、数据字典 - 复习 1、约束的延迟 创建约束
7. 索引-视图-序列-同义词.ppt
7. 索引-视图-序列-同义词 - 广州大学华软软件学院 软件工程系 第七章索引-视图-序列-同义词 在Oracle中,索引是除表之外另一个重要的 模式对象,索引主要用于...
oracle 第13讲 使用视图、索引、序列和同义词.ppt
oracle 第13讲 使用视图、索引序列和同义词 - Oracle数据库原理
索引,视图,序列,同义词,锁.doc
SQL> grant drop any synonym to sunjob; SQL> drop synonym emp; 4.2 序列...select * from user_views; 4.4 索引索引表关联的一种可选数据库对象。...
实验9 索引、视图、序列和同义词_习题答案.doc
实验9 姓名:专业: 同组人: 索引、视图、序列和同义词 索引、视图、序列和同义词 1121145227 2 2012-4-23 计算机科学与技术 软件工程专升本 无 学班 号级 ::...
9 索引、序列、同义词、数据字典_图文.ppt
9 索引序列同义词、数据字典 - 复习 1、约束的延迟 创建约束时默认使用N
实验7-索引-视图-序列-同义词.doc
实验7-索引-视图-序列-同义词 - 实验七 索引-视图-序列-同义词 实验目的: 本次实验旨在使学生正确理解数据库模式对象:索引、视图、序列同义词的定义、作用和...
视图-索引-同义词-序列.doc
同义词时现有数据库对象的别名 2、序列用于生成唯一、连续的序号 3、视图时基于一个或多个表的虚拟表 4、索引表相关的一个可选结构,用于提高 SQL 语句...
3表、索引、 视图、序列、同义词.doc
3表、索引、 视图、序列同义词 - 第 5 章 oracle 基本对象 一、填空题 1. 在 B 树索引中,通过在索引中保存排过序的索引列值与相对应记录的 ROWID 来...