Oracle数据库03


 

 

 

 

 

 

 

 

 

 

 

 

 

数据库对象。

 

视图,序列等我们要创建同义词的对象的名称。

(三)案例

 

  • 私有同义词

需求:为表T_OWNERS 创建( 私有 )同义词 名称为 OWNERS

语句:

使用同义词:

 

查询结果如下:

 

  • 公有同义词

需求:为表T_OWNERS 创建( 公有 )同义词 名称为 OWNERS2

 

 

 

 

 

 

以另外的用户登陆,也可以使用公有同义词:

 

 

五、索引

(一)什么是索引

 

索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能。

索引是需要占据存储空间的,也可以理解为是一种特殊的数据。形式类似于 下图的一棵"树",而树的节点存储的就是每条记录的物理地址,也就是我们提 到的伪列(ROWID

 

(二)普通索引

 

语法:

 

 

段来建立索引。语句如下:

 

索引性能测试:

创建一个两个字段的表

编写 PL/SQL 插入 100 万条记录(关于 PL/SQL 我们在第四章会学到)

创建完数据后,根据 name 列创建索引

 

执行下面两句 SQL 执行

 

我们会发现根据 name 查询所用的时间会比根据 id 查询所用的时间要短

 

(三)唯一索引

 

如果我们需要在某个表某个列创建索引,而这列的值是不会重复的。这是我们可 以创建唯一索引。

 

语法:

 

需求:在业主表的水表编号一列创建唯一索引语句:

 

 

 

(四)复合索引

 

我们经常要对某几列进行查询,比如,我们经常要根据学历和性别对学员进行搜 索,如果我们对这两列建立两个索引,因为要查两棵树,查询性能不一定高。那 如何建立索引呢?我们可以建立复合索引,也就是基于两个以上的列建立一个索 引 。

语法:

根据地址和门牌号对学员表创建索引,语句如下:

 

(五)反向键索引

 

应用场景:当某个字段的值为连续增长的值,如果构建标准索引,会形成歪脖子 树。这样会增加查询的层数,性能会下降。建立反向键索引,可以使索引的值变 得不规则,从而使索引树能够均匀分布。

 

 

 

语法:

 

(六)位图索引

 

使用场景:位图索引适合创建在低基数列上

位图索引不直接存储 ROWID,而是存储字节位到 ROWID 的映射优点:减少响应时间,节省空间占用

语法:

需求:我们在T_owners 表的 ownertypeid 列上建立位图索引,语句:

 

 

六、总结

(一)知识点总结

 

(二)上机任务布置

 

基于 scott 用户联系各种数据库对象的创建。

因为 scott 用户权限较低,而创建各种数据库对象需要较高权限,所以需要赋予

 

scott 用户 dba 权限

 

  • 创建视图 view_emp,显示雇员表中的 EMPNO    ENAME    JOB

 

 

  • 创建带约束的视图 view_emp30,显示部门编号为 30 的雇员信息。

 

 

  • 创建只读视图,显示部门表中的信息。

 

 

  • 创建物化视图(自动刷新),显示雇员编号、雇员名称、雇员职位和雇员部 门。

 

  • 创建物化视图(手动刷新),查询列出各部门的部门名和部门经理名字。并 编写手动刷新命令。

 

 

  • 编写序列 seq_1 ,100 开始 ,增长 10 ,最大值 1000,最小值 10 ,循环 。

 

 

  • 编写序列 seq_2 ,最大值 100 ,最小值 5,增长值 5 ,不循环。

 

 

  • 编写序列 SEQ_EMP,    起始值 8000,增长 1 ,不循环,不缓存。

 

 

  • 编写序列 SEQ_DEPT,    起始值 50,增长 10 ,不循环,缓存 30

 

 

 

  • 根据雇员名称对雇员表建立索引

 

 

  • 根据部门编号和职位对雇员表建立索引

 

 

  • 在奖金表根据职位建立位图索引

 

 

  • EMP 表创建私有同义词

 

 

  • DEPT 表创建公有同义词