lession4数据库对象.ppt_第1页
lession4数据库对象.ppt_第2页
lession4数据库对象.ppt_第3页
lession4数据库对象.ppt_第4页
lession4数据库对象.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

第四章 数据库对象 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 更改和删除序列 SQL ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE; 使用ALTER SEQUENCE语句修改序列, 不能更改序列的START WITH参数 使用DROP SEQUENCE语句删除序列 SQL DROP SEQUENCE toys_seq; 11 视图 视图以经过定制的方式显示来自一个或多 个表的数据 视图可以视为“虚拟表”或“存储的查询” 创建视图所依据的表称为“基表” 视图的优点有: 提供了另外一种级别的表安全性 隐藏的数据的复杂性 简化的用户的SQL命令 隔离基表结构的改变 通过重命名列,从另一个角度提供数据 12 创建视图 3-1 studnostudnamestudmarkssubnostudcaste 1Rob452Open 2James334SC 3Jesica405Open Stud_details Stud_viewstudnostudnamesubno 1Rob2 2James4 3Jesica5 创建视图 CREATE VIEW stud_view AS SELECT studno, studname, subno FROM Stud_details; 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 StudnoStudnameSubmrksSubno 1Rob452 2James334 3Jesica404 SubnoSubname 2English 4Maths 5Science Stud_detailsSub_details StudnoStudnameSubmrksSubname 1Rob45English 2James33Maths 3Jesica40Maths 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 键保留表 StudnoStudnameSubmrksSubno 1Rob452 2James334 3Jesica404 SubnoSubname 2English 4Maths 5Science Stud_detailsSub_details StudnoStudnameSubmarksSubnoSubname 1Rob452English 2James334Maths 3Jesica404Maths 键保留表 因为 Studno 既是 Stud_details 中的主键, 也是联接结果中的主键 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 唯一索引 SQL CREATE UNIQUE INDEX item_index ON itemfile (itemcode); 唯一索引确保在定义索引的列中没有重复值 Oracle 自动在表的主键列上创建唯一索引 使用CREATE UNIQUE INDEX语句创建唯一索 引 24 组合索引 SQL CREATE INDEX comp_index ON itemfile(p_category, itemrate); 组合索引是在表的多个列上创建的索引 索引中列的顺序是任意的 如果 SQL 语句的 WHERE 子句中引用了组合索 引的所有列或大多数列,则可以提高检索速度 25 反向键索引反转索引列键值的每个字节 通常建立在值是连续增长的列上,使数据 均匀地分布在整个索引上 创建索引时使用REVERSE关键字 反向键索引 SQL CREATE INDEX rev_index ON itemfile (itemcode) REVERSE; SQL ALTER INDEX rev_index REBUID NOREVERSE; 26 位图索引 SQL CREATE BITMAP INDEX bit_index ON order_master (orderno); 位图索引适合创建在低基数列上 位图索引不直接存储ROWID,而是存储字 节位到ROWID的映射 减少响应时间 节省空间占用 27 索引组织表 2-1 SQL CREATE TABLE ind_org_tab ( vencode NUMBER(4) PRIMARY KEY, venname VARCHAR2(20) ) ORGANIZATION INDEX; 索引组织表的数据存储在与其关联的索引中 索引中存储的是行的实际数据,而不是ROWID 基于主键访问数据 CREATE TABLE 命令与 ORGANIZATION INDEX 子 句一起用于创建索引组织表 28 索引组织表 2-2 普通表与索引组织表的比较 普通表索引组织表 ROWID 唯一地标识行主键唯一地标识行 隐式的 ROWID 列没有隐式的 ROWID 列 基于 ROWID 的访问基于主键的访问 顺序扫描返回所有行 完全索引扫描返回所有行,并按 主键顺序排列 支持分区不支持分区 29 基于函数的索引 SQL CREATE INDEX lowercase_idx ON toys (LOWER(toyname); 基于一个或多个列上的函数或表达式创建 的索引 表达式中不能出现聚合函数 不能在LOB类型的列上创建 创建时必须具有 QUERY REWRITE 权限 SQL SELECT toyid FROM toys WHERE LOWER(toyname)=doll; 30 索引中的分区 可以将索引存储在不同的分区中 与分区有关的索引有三种类型: 局部分区索引 在分区表上创建的索引,在每个 表分区上创建独立的索引,索引的分区范围与表 一致 全局分区索引 在分区表或非分区表上创建的索 引,索引单独指定分区的范围,与表的分区范围 或是否分区无关 全局非分区索引 在分区表上创建的全局普通索 引,索引没有被分区 31 获取索引的信息 SQL SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME FROM USER_IND_COLUMN

温馨提示

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

评论

0/150

提交评论