html5-img
1 / 32

第四章

第四章. 数据库对象. 回顾. 锁用于保护多用户环境下被修改的数据 锁分为两种级别,即行级锁和表级锁 表分区允许将一个表划分成几部分,以改善大型应用系统的性能 分区方法包括范围分区、散列分区、复合分区和列表分区 分区维护操作包括添加、删除、截断、合并和拆分分区. 目标. 使用同义词 使用序列 创建视图 创建索引. 数据库对象简介. Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括:. 数据库对象  . 同义词. 序列. 视图. 索引. 同义词 3 -1.

Download Presentation

第四章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第四章 数据库对象

  2. 回顾 • 锁用于保护多用户环境下被修改的数据 • 锁分为两种级别,即行级锁和表级锁 • 表分区允许将一个表划分成几部分,以改善大型应用系统的性能 • 分区方法包括范围分区、散列分区、复合分区和列表分区 • 分区维护操作包括添加、删除、截断、合并和拆分分区

  3. 目标 • 使用同义词 • 使用序列 • 创建视图 • 创建索引

  4. 数据库对象简介 • Oracle 数据库对象又称模式对象 • 数据库对象是逻辑结构的集合,最基本的数据库对象是表 • 其他数据库对象包括: 数据库对象   同义词 序列 视图 索引

  5. 同义词 3-1 • 同义词是现有对象的一个别名。 • 简化SQL语句 • 隐藏对象的名称和所有者 • 提供对对象的公共访问 • 同义词共有两种类型: 公有同义词可被所有的数据库用户访问。 同义词 私有同义词只能在其模式内访问,且不能与当前模式的对象同名。 私有同义词 公有同义词

  6. 同义词 3-2 私有同义词 CREATE SYNONYM emp FOR SCOTT.emp; SCOTT.emp的别名 模式名 表名 公有同义词 CREATE PUBLIC SYNONYM emp_syn FOR SCOTT.emp; 同义词名称

  7. 同义词 3-3 创建或替换现有的同义词 CREATE OR REPLACE SYNONYM emp_syn FOR SCOTT.emp; 替换现有的同义词 删除同义词 SQL> DROP SYNONYM emp; SQL> DROP PUBLIC SYNONYM emp_syn;

  8. 序列 • 序列是用于生成唯一、连续序号的对象 • 序列可以是升序的,也可以是降序的 • 使用CREATE SEQUENCE语句创建序列 SQL> CREATE SEQUENCE toys_seq START WITH 10 INCREMENT BY 10 MAXVALUE 2000 MINVALUE 10 NOCYCLE CACHE 10; 指定第一个序号从 10 开始 指定序号之间的间隔为 10 表示序列的最大值为 2000 表示序列的最小值为 10 在达到最大值后停止生成下一个值 指定内存中预先分配的序号数

  9. 访问序列 • 通过序列的伪列来访问序列的值 • NEXTVAL 返回序列的下一个值 • CURRVAL 返回序列的当前值 SQL> INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, ‘TWENTY’, 25); SQL> INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, ’MAGIC PENCIL’, 75); 指定序列的下一个值 SQL> SELECT toys_seq.CURRVAL FROM dual; 检索序列的当前值

  10. 更改和删除序列 使用ALTER SEQUENCE语句修改序列, 不能更改序列的START WITH参数 SQL> ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE; 使用DROP SEQUENCE语句删除序列 SQL> DROP SEQUENCE toys_seq;

  11. 视图 • 视图以经过定制的方式显示来自一个或多个表的数据 • 视图可以视为“虚拟表”或“存储的查询” • 创建视图所依据的表称为“基表” • 视图的优点有: • 提供了另外一种级别的表安全性 • 隐藏的数据的复杂性 • 简化的用户的SQL命令 • 隔离基表结构的改变 • 通过重命名列,从另一个角度提供数据

  12. 创建视图 3-1 Stud_details 创建视图 CREATE VIEW stud_view AS SELECT studno, studname, subno FROM Stud_details; Stud_view

  13. 创建视图 3-2 • 创建视图的语法: CREATE [OR REPLACE] [FORCE] VIEW view_name [(alias[, alias]...)] AS select_statement [WITH CHECK OPTION] [WITH READ ONLY];

  14. 创建视图 3-3 使用 WITH CHECK OPTION 选项创建视图 CREATE OR REPLACE VIEW pause_view AS SELECT * FROM order_master WHERE ostatus = 'p' WITH CHECK OPTION CONSTRAINT chk_pv; 使用 ORDER BY 子句创建视图 CREATE OR REPLACE VIEW ord_ven AS SELECT * FROM vendor_master ORDER BY venname; 创建带有错误的视图 CREATE FORCE VIEW ven AS SELECT * FROM venmaster;

  15. 联接视图 2-1 Stud_details Sub_details 联接视图 CREATE VIEW Stud_sub_view AS SELECT Studno, Studname, Submrks, Subname FROM Stud_details, Sub_Details WHERE Stud_details.Subno=Sub_details.Subno; Stud_sub_view

  16. 联接视图 2-2 创建外联接视图 CREATE VIEW ven_ord_outj_view AS SELECT vm.vencode, venname, orderno, odate, ostatus FROM vendor_master vm, order_master om WHERE vm.vencode = om.vencode(+); SELECT vm.vencode, venname, orderno, odate, ostatus FROM vendor_master vm LEFT OUTER JOIN order_master om ON vm.vencode = om.vencode;

  17. 视图上的DML语句 • 在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE • 视图上的DML语句有如下限制: • 只能修改一个底层的基表 • 如果修改违反了基表的约束条件,则无法更新视图 • 如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图 • 如果视图包含伪列或表达式,则将无法更新视图

  18. 键保留表 Stud_details Sub_details 联接视图 Stud_details为什么 是键保留表? 键保留表 因为 Studno既是 Stud_details 中的主键, 也是联接结果中的主键

  19. 视图中的函数 • 视图中可以使用单行函数、分组函数和表达式 • 使用DROP VIEW语句删除视图 CREATE VIEW item_view AS SELECT itemcode, LOWER(itemdesc) item_desc FROM itemfile; SQL> DROP VIEW toys_view;

  20. 索引 3-1 • 索引是与表相关的一个可选结构 • 用以提高 SQL 语句执行的性能 • 减少磁盘I/O • 使用 CREATE INDEX 语句创建索引 • 在逻辑上和物理上都独立于表的数据 • Oracle 自动维护索引

  21. 索引 3-2 • 索引有各种类型,除了标准索引外,还有一些特殊类型的索引: 索引的类型 唯一索引 组合索引 反向键索引 基于函数的索引 位图索引

  22. 索引 3-3 创建标准索引 SQL> CREATE INDEX item_index ON itemfile (itemcode) TABLESPACE index_tbs; 重建索引 SQL> ALTER INDEX item_index REBUILD; 删除索引 SQL> DROP INDEX item_index;

  23. 唯一索引 • 唯一索引确保在定义索引的列中没有重复值 • Oracle 自动在表的主键列上创建唯一索引 • 使用CREATE UNIQUE INDEX语句创建唯一索引 SQL> CREATE UNIQUE INDEX item_index ON itemfile (itemcode);

  24. 组合索引 • 组合索引是在表的多个列上创建的索引 • 索引中列的顺序是任意的 • 如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度 SQL> CREATE INDEX comp_index ON itemfile(p_category, itemrate);

  25. 反向键索引 • 反向键索引反转索引列键值的每个字节 • 通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上 • 创建索引时使用REVERSE关键字 SQL> CREATE INDEX rev_index ON itemfile (itemcode) REVERSE; SQL> ALTER INDEX rev_index REBUID NOREVERSE;

  26. 位图索引 • 位图索引适合创建在低基数列上 • 位图索引不直接存储ROWID,而是存储字节位到ROWID的映射 • 减少响应时间 • 节省空间占用 SQL> CREATE BITMAP INDEX bit_index ON order_master (orderno);

  27. 索引组织表 2-1 • 索引组织表的数据存储在与其关联的索引中 • 索引中存储的是行的实际数据,而不是ROWID • 基于主键访问数据 • CREATE TABLE 命令与 ORGANIZATION INDEX 子句一起用于创建索引组织表 SQL> CREATE TABLE ind_org_tab ( vencode NUMBER(4) PRIMARY KEY, venname VARCHAR2(20) ) ORGANIZATION INDEX;

  28. 索引组织表 2-2 • 普通表与索引组织表的比较

  29. 基于函数的索引 • 基于一个或多个列上的函数或表达式创建的索引 • 表达式中不能出现聚合函数 • 不能在LOB类型的列上创建 • 创建时必须具有 QUERY REWRITE 权限 SQL> CREATE INDEX lowercase_idx ON toys (LOWER(toyname)); SQL> SELECT toyid FROM toys WHERE LOWER(toyname)='doll';

  30. 索引中的分区 • 可以将索引存储在不同的分区中 • 与分区有关的索引有三种类型: • 局部分区索引 - 在分区表上创建的索引,在每个表分区上创建独立的索引,索引的分区范围与表一致 • 全局分区索引 - 在分区表或非分区表上创建的索引,索引单独指定分区的范围,与表的分区范围或是否分区无关 • 全局非分区索引 - 在分区表上创建的全局普通索引,索引没有被分区

  31. 获取索引的信息 • 与索引有关的数据字典视图有: • USER_INDEXES - 用户创建的索引的信息 • USER_IND_PARTITIONS - 用户创建的分区索引的信息 • USER_IND_COLUMNS - 与索引相关的表列的信息 SQL> SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME FROM USER_IND_COLUMNS ORDER BY INDEX_NAME, COLUMN_POSITION;

  32. 总结 • 同义词是现有数据库对象的别名 • 序列用于生成唯一、连续的序号 • 视图是基于一个或多个表的虚拟表 • 索引是与表相关的一个可选结构,用于提高 SQL语句执行的性能 • 索引类型有标准索引、唯一索引、反向键索引、位图索引和基于函数的索引 • 索引组织表基于主键访问数据

More Related