SQL 实验四 视图、序列、同义词和索引 下载本文

第2部分 SQL实验四 视图、序列、同义词和索引

SQL实验四 视图、序列、同义词和索引

实验目标:

?

掌握视图、序列、同义词和索引的创建及使用方法

实验环境:Oracle10g 实验内容:

? ? ? ? ?

在“订单”数据库中创建视图 创建序列

插入值时在表中使用序列 创建同义词 创建索引

实验步骤: 4.1 视图

视图是一个虚拟表,其内容是借助于查询从表中获取的。在这些表中所作的更改自动反映在视图中。语法如下:

CREATE VIEW viewname AS SELECT

注意:ORDER BY 不能与视图一起使用。

实验4-1 建立“上海”客户的视图,并取名“Customer_sh”。

上面的查询创建一个名为“Customer_sh”的视图。创建视图之后,您可像查看任何表一样查看该视图。请给出如下所示的语句:

96

第2部分 SQL实验四 视图、序列、同义词和索引

实验4-2 建立一个名为Order_Sh的包含所有上海客户订单信息的视图,要求在该视图中包括各客户的公司名称、订单代号和订购日期等属性列。

实验4-3 删除名为 Customer_sh的视图。

练习4-1 建立一个名为Avg_price的视图,其中包括产品的类别代号及平均价格两项。 4.2 序列

序列用来生成可用作主键的唯一整数。语法如下:

CREATE SEQUENCE sequencename

97

第2部分 SQL实验四 视图、序列、同义词和索引

INCREMENT BY START WITH

? ? ?

sequencename 是创建的序列的名称; 是指定的递增数,默认值是 1; 是序列的开始数。

实验4-4 创建名从3开始、步长为1、名为“seqno”的序列。

下:

上面的查询创建名为“seqno”的序列,我们也可以在创建序列之后插入值。格式如

INSERT INTO tablename(sequence column number, columnnames) VALUES (sequence name.NEXTVAL, values);

? ?

Sequence column number 是您生成序列编号的列名称 Column names 是表的其他列。

实验4-5 假定数据库中有一个名为new_ptype的表,其结构和数据如下图所示:

请给出如下所示的语句:

98

第2部分 SQL实验四 视图、序列、同义词和索引

说明:上面的INSERT语句在new_ptype表中插入了一个Tno为3的记录,因为序列SEQNO是从3 开始的。

实验4-6 给出如下所示的语句可删除创建的序列。

4.3同义词

同义词是 Oracle 对象的别名。此对象可以是表、视图、程序、函数或另一个同义词。同义词不是实际对象,而是对对象的参考。同义词非常有用,这是因为它们隐藏参考的对象的身份。在重命名对象或修改对象的情况下,这十分有用,因为这样就只需要重新定义同义词。这有助于缩短在项目中所花费的重新编译和修改时间。

创建同义词的语法如下:

CREATE SYNONYM synonymname FOR tablename

实验4-7 创建一个名为“new”(新)的同义词,该同义词参考Customer表。请给出如下所示的语句:

99

第2部分 SQL实验四 视图、序列、同义词和索引

上面的查询中创建的同义词可通过给出下列语句进行查看。 SELECT * from new;

要删除上面创建的同义词,请给出如下语句。

DROP SYNONYM new;

4.4 索引(INDEXES)

索引有助于更快地进入表中的列。索引还可以避免输入到列中的值产生重复现象。 语法如下:

CREATE INDEX indexname ON tablename(columnname)

实验4-8 创建一个名为 idx 的、关于City字段的、Customer表的索引。请给出如下所示的语句:

练习4-2 在Orders表中的Order_date列上创建一个名为 idx 索引,观察会发生什么情况。 这会显示一条出错信息,显示 “name already used by an existing object”(该名称已由现有对象使用)。因此,需要创建一个具有某个其他名称的索引。 100