第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
? ? ?
sequencename 是创建的序列的名称;
实验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