第四章上机课数据库对象_第1页
第四章上机课数据库对象_第2页
第四章上机课数据库对象_第3页
第四章上机课数据库对象_第4页
第四章上机课数据库对象_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库对象目标: 能够创建和使用同义词 能够创建和使用序列 能够创建和使用视图 能够创建各种类型的索引第一部分:指导本阶段重点学习创建和使用同义词、序列、视图,并尝试创建各种索引的方法。学员必须能够完全理 解这些概念,并且能够轻松地使用这些数据库对象。阶段一:创建同义词 需求说明:为表“ ticket-header ”创建一个名为“ tick ”的同义词 实现思路:可以使用 CREATE SYNONYM 语句来创建同义词。参考步骤:(1 打开 SQL *Plus并以 用户身份登录到 Oracle 数据库。(2 在 SQL 提示符下执行下列 SQL 语句。 (3 在 SQL 提示符下执行下列 S

2、QL 语句。阶段二:私有同义词和公有同义词需求说明:要求数据库中的所有用户能够访问 ticket-header 表而不必知道该表属于哪个用户, 请给出解决方案。 实现思路:Oracle 支持两种类型的同义词。 它们是私有同义词和公有同义词。 只有创建私有同义词的用户才 能访问该同义词。数据库中的所有用户都可以使用公有同义词。在练习 1中创建的同义词为私 有同义词。关键字 PUBLIC 用于创建公有同义词。请注意同义公有同义词需要拥有适当的权限。 下面为同一个表“ ticket-header ”创建一个名为“ pub- tickr”的公有同义词。参考步骤:(1 在 SQL 提示符下执行下列 SQ

3、L 语句。 (当前用户不为 system, 比如为 ACCP 或 。Oracle 将在 SQL 提示符下显示下列消息。 (2 以 SYSTEM 用户身份登录的 Oracle 数据库。在 SQL提示符下执行下列 SQL 语句。 (3 以 SCOTT 用户身份登录的 Oracle 数据库。在 SQL提示符下执行下列 SQL 语句。 阶段三:删除同义词需求说明:不再需要该同义词,需要将其从数据库中删除。 实现思路: 可以使用 DROP SYNONYM 语句删除同义词。下面的操作尝试删除刚创建的名为“ pub- tick” d 的同义词。参考步骤:(1 以 用户身份在 SQL 提示符下执行下列SQL

4、语句。 Oracle 将在 SQL 提示符下显示下列消息。 (2 以 +用户身份在 SQL 提示符下执行下列 SQL 语句。Oracle 将在 SQL 提示符下显示下列消息。 注意:在删除私有同义词时,无需使用关键字 PUBLIC 。删除公有同义词需要拥有“ DROP PUBLIC SYNONYM ”权限。阶段四:创建序列需求说明: 请创建一个名为“ new-seq ”的序列。该序列的初始值为 25,每次获取序列值时,该值都增加 2, 直到序列值达到 75,然后重新从 25开始。实现思路: CREATE SEQUENCE 语句用于创建序列。此语句中包含 INCREMENT BY 、 START

5、 WITH 、 MINV ALUE 、 MAXV ALUE 、 CYCLE 以及 CACHE 等参数。参考步骤:在 SQL*Plus中输入以下语句。 阶段五:访问序列 需求说明:请使用前面创建的序列来生成序号 实现思路:Oracle 提供了两个伪列,可以用来访问序列的值。它们是 CURRV AL 和 NEXTV AL 。 CURRV AL 返回序列的当前值。 NEXTV AL 使用子句中指定的值来增加序列的当前值,并返回这个新值。参考步骤:(1 执行下列语句以显示序列的下一个值。 (2 执行下列语句以显示序列的当前值。 阶段六:更改序列需求说明:需要修改序列每次增加的间隔,从 2增加到 5。实

6、现思路:可以使用 ALTER SEQUENCE语句来修改序列的定义。此语句可以用来修改除“ STARTWITH ” 子句之外的所有子句的所有值。参考步骤:(1 在 SQL 提示符下执行下列语句。 (2 执行下列语句查看所作的修改。 阶段七:删除序列需求说明:请删除不在使用的序列。实现思路:DROP SEQUENCE语句用于从数据库中删除序列。参考步骤:在 SQL*Plus 中输入以下语句。 阶段八:创建视图需求说明:用户经常只需要显示“ fleet-header ”表的“ day ”列和“ routeid ”列,给出解决方案。 实现思路:可以使用 CREATE VIEW 语句来创建视图。下面创

7、建一个名为“ fleet ”的视图,该视图仅显示 “ fleet-header ”表的“ day ”列和“ routeid ”列。参考步骤:(1 创建基表 (2创建视图 (3 访问视图 此语句将显示 fleet-header 表中的数据。阶段九:修改视图定义需求说明:需要修改 fleet 视图的定义,使该视图显示“ fleet-header ”表中的所有列。 实现思路:可以使用 CREATE VIEW语句的“ OR REPLACE”选项,替代现有的视图定义。 参考步骤:在 SQL*Plus中输入以下命令。 阶段十:创建带有错误的视图需求说明:有时可能必须创建一个引用不存在的表或无效表列的视图,

8、给出解决方案。 实现思路:使用 CREATE VIEW命令的“ FORCE ”的选项创建带有错误的视图。 参考步骤:在 SQL 提示符下执行下列 SQL 语句。表“product ”在数据库中不存在。 如果上述语句成功执行, Oracle 将显示下列消息。 阶段十一:联接视图需求说明:创建一个视图,包含 fleet-header 表的 fleet-id 列,以及 ticket-header 表的 ticket-no 、 origin 和 destination 列。实现思路:可以创建一个视图来显示多个表中的数据,这种类型的视图称为“联接视图” 。 参考步骤:在 SQL*Plus中输入以下语句。

9、 阶段十二:删除视图需求说明:如何删除名为“ double ”的视图。实现思路:DROP VIEW 语句用于从数据库中删除视图。参考步骤:在 SQL*Plus中输入以下命令。 阶段十三:创建标准索引需求说明:如何在 fleet-header 表的 adults 列上创建名为“ aud-index ”的索引。实现思路:使用 CREATE INDEX语句可以创建索引。参考步骤:在 SQL*Plus中输入以下命令。 练习十四:创建唯一索引需求说明:如何在 place- header表的 place-name 列上创建名为“ place-ind ”的唯一索引。实现思路:唯一索引可以确保在定义索引的列中

10、任意两行的值都不相同。可以使用 CREATE UNIQUE INDEX 命令明确地创建唯一索引。参考步骤:在 SQL*Plus中输入以下语句,先创建表,在创建唯一索引。 阶段十五:创建组合索引需求说明:因为用户的查询经常指定 route-id 和 route-no 列作为查询条件,需要在 route- header表的 route-id 和 route-no 列上创建索引,以提高查询的速度。实现思路:老二牛车教育 Oracle 数据库应用 上机课 组合索引是在表的多个列上创建的索引。 组合随意中列的顺序电话任意的, 也无须是表中相邻的列。 参考步骤: 在 SQL*Plus 中输入以下语句,先创

11、建表,在创建唯一索引。 CREATE TABLE route_header( route_id number, route_no varchar2(10, cat_code char(2 ; CREATE INDEX comp_index ON route_header(route_id, route_no; 阶段十六:创建反向键索引 需求说明: route-header 表的 route-no 列值是一个顺序增长的序号, 需要在此列上创建索引以提高查询速度。 实现思路: 反向键索引反转索引列中的每一个字节。这种索引的优点在于可以将插入操作发布在整个索引 上。CREATE 参考步骤: 在 SQ

12、L*Plus 中输入以下语句 CREATE INDEX rev-ind ON route- header (route-no REVERSE; INDEX 语句与 REVERSE 关键字一起使用可以创建反向键索引。 阶段十七:创建位图索引 需求说明: route-header 表的 cat-code 列值是一个字典项,只有几十个可能的取值,需要在此列上创建索引 以提高查询速度。 实现思路: 位图索引是为低基数列创建的,也就是列的取值只能在可以列举的有限的范围内。 参考步骤: 在 SQL*Plus 中输入以下语句 CREATE BITMAP INDEX bit-ind ON route- hea

13、der (cat-code; 阶段十八:创建基于函数的索引 需求说明: fleet-header 表的 name 列经常被指定为查询条件,但是表中的数据大小写都有,没有固定的规则, 需要在此列上创建索引以提高查询速度。 实现思路: 可以使用基于表的一个列和多个列上的函数或表达式创建索引。 在 fleet-header 表的 name 列上创建 大写函数索引,查询时指定该列的大写值作为查询条件即可以利用此三以提高查询效率。 参考步骤: (1) 在 SQL*Plus 中输入以下语句。 INDEX ucase-name-ind ON fleet-header (UPPER(name; CREATE

14、老二牛车教育 Oracle 数据库应用 上机课 (2 输入以下语句使用该索引。 SELECT * FROM fleet_header WHERE UPPER(name=SMITH; 阶段十九:删除索引 需求说明: employee 表上创建了过多的索引,导致更新表的速度降低,需要删除此表上创建的一些索引。 实现思路: DROP INDEX 命令用于删除索引。 参考步骤: 在 SQL*Plus 中输入以下语句。 SQL DROP INDEX emp-ind1; 第二部分:练习 1 基于 route-header 表创建一个名为 fun-view 的视图,该视图将显示特定类别中路线的数目。 要实现

15、此目的,请执行下列操作。 (1)打开 SQL*Plus 窗口,并登录到 Oracle 数据库。 (2)执行 CREATE VIEW 语句,创建基于 route-header 表的视图,该视图将显示以下两个列:一个 是有关类别的列,另一个是有关路线数目的列。 (3)在视图的查询定义中,请使用 GROUP BY 子句和 COUNT 函数。 2 创建一个名为 place 的索引组织表, 该表包含下面几个列, 见表 4.1。 place-id 列将用于唯一标识行。 步骤如下: (1)打开 SQL*Plus 窗口,并登录到 Oracle 数据库。 (2)使用执行表 4.1 中的详细信息执行 CREATE TABLE 语句。 表 4.1 place 的索引组织表 字段 Place-id Name Address Station 数据类型 NUMBER VARCHAR2 VARCHAR2 VARCHAR2 宽度 5 20 20 10 提示:定义主键列,使用 ORGANIZATION INDEX 子句。 作业 1 创建一个 vend-seq 序列, 将 INCREMENT BY 属性设置为 1, MAXVALUE 属性设置为 500, CACHE 属性设置为 10。 2 用下面的列创建名为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论