《最新四章数据库对象ppt课件PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新四章数据库对象ppt课件PPT课件.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2回顾 锁用于保护多用户环境下被修改的数据 锁分为两种级别,即行级锁和表级锁 表分区允许将一个表划分成几部分,以改善大型应用系统的性能 分区方法包括范围分区、散列分区、复合分区和列表分区 分区维护操作包括添加、删除、截断、合并和拆分分区9序列 序列是用于生成唯一、连续序号的对象 序列可以是升序的,也可以是降序的 使用CREATE SEQUENCE语句创建序列SQL CREATE SEQUENCE toys_seqSTART WITH 10INCREMENT BY 10MAXVALUE 2000MINVALUE 10NOCYCLECACHE 10;指定第一个序号从 10 开始指定序号之间的间隔为
2、 10表示序列的最大值为 2000表示序列的最小值为 10在达到最大值后停止生成下一个值指定内存中预先分配的序号数 10访问序列 通过序列的伪列来访问序列的值 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);指定序列的下
3、一个值SQL SELECT toys_seq.CURRVAL FROM dual;检索序列的当前值11更改和删除序列SQL ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE;使用ALTER SEQUENCE语句修改序列,不能更改序列的START WITH参数使用DROP SEQUENCE语句删除序列SQL DROP SEQUENCE toys_seq;12视图 视图以经过定制的方式显示来自一个或多个表的数据 视图可以视为“虚拟表”或“存储的查询” 创建视图所依据的表称为“基表” 视图的优点有: 提供了另外一种级别的表安全性 隐藏的数据的复杂性 简化的用户的
4、SQL命令 隔离基表结构的改变 通过重命名列,从另一个角度提供数据13创建视图 3-1studnostudnamestudmarkssubnostudcaste1Rob452Open2James334SC3Jesica405OpenStud_detailsStud_viewstudnostudnamesubno1Rob22James43Jesica5创建视图CREATE VIEW stud_viewAS SELECT studno, studname, subnoFROM Stud_details;14创建视图 3-2创建视图的语法: CREATE OR REPLACE FORCE VIEW
5、view_name (alias, alias.) AS select_statement WITH CHECK OPTION WITH READ ONLY;15创建视图 3-3使用 WITH CHECK OPTION 选项创建视图CREATE OR REPLACE VIEW pause_view ASSELECT * FROM order_master WHERE ostatus = pWITH CHECK OPTION CONSTRAINT chk_pv;使用 ORDER BY 子句创建视图CREATE OR REPLACE VIEW ord_ven ASSELECT * FROM ven
6、dor_master ORDER BY venname;创建带有错误的视图CREATE FORCE VIEW ven ASSELECT * FROM venmaster;16联接视图 2-1StudnoStudnameSubmrksSubno1Rob4522James3343Jesica404SubnoSubname2English4Maths5ScienceStud_detailsSub_detailsStudnoStudnameSubmrksSubname1Rob45English2James33Maths3Jesica40MathsCREATE VIEW Stud_sub_view AS
7、SELECT Studno, Studname, Submrks, SubnameFROM Stud_details, Sub_Details WHERE Stud_details.Subno=Sub_details.Subno;Stud_sub_view联接视图17联接视图 2-2创建外联接视图CREATE VIEW ven_ord_outj_view ASSELECT vm.vencode, venname, orderno, odate, ostatusFROM vendor_master vm, order_master omWHERE vm.vencode = om.vencode(
8、+);SELECT vm.vencode, venname, orderno, odate, ostatusFROM vendor_master vm LEFT OUTER JOIN order_master omON vm.vencode = om.vencode;18视图上的DML语句 在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE 视图上的DML语句有如下限制: 只能修改一个底层的基表 如果修改违反了基表的约束条件,则无法更新视图 如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图 如果视
9、图包含伪列或表达式,则将无法更新视图19键保留表StudnoStudnameSubmrksSubno1Rob4522James3343Jesica404SubnoSubname2English4Maths5ScienceStud_detailsSub_detailsStudnoStudnameSubmarksSubnoSubname1Rob452English2James334Maths3Jesica404Maths键保留表因为 Studno 既是 Stud_details 中的主键,也是联接结果中的主键 Stud_details 为什么是键保留表?联接视图20 视图中可以使用单行函数、分组函
10、数和表达式 使用DROP VIEW语句删除视图视图中的函数CREATE VIEW item_view AS SELECT itemcode, LOWER(itemdesc) item_descFROM itemfile; SQL DROP VIEW toys_view; 21索引 3-1 索引是与表相关的一个可选结构 用以提高 SQL 语句执行的性能 减少磁盘I/O 使用 CREATE INDEX 语句创建索引 在逻辑上和物理上都独立于表的数据 Oracle 自动维护索引22索引 3-2 索引有各种类型,除了标准索引外,还有一些特殊类型的索引:索引的类型基于函数的索引反向键索引位图索引唯一索引
11、组合索引23索引 3-3SQL CREATE INDEX item_index ON itemfile (itemcode) TABLESPACE index_tbs;创建标准索引重建索引SQL ALTER INDEX item_index REBUILD; 删除索引SQL DROP INDEX item_index; 24唯一索引SQL CREATE UNIQUE INDEX item_index ON itemfile (itemcode); 唯一索引确保在定义索引的列中没有重复值 Oracle 自动在表的主键列上创建唯一索引 使用CREATE UNIQUE INDEX语句创建唯一索引25
12、组合索引SQL CREATE INDEX comp_index ON itemfile(p_category, itemrate); 组合索引是在表的多个列上创建的索引 索引中列的顺序是任意的 如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度26 反向键索引反转索引列键值的每个字节 通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上 创建索引时使用REVERSE关键字反向键索引SQL CREATE INDEX rev_index ON itemfile (itemcode) REVERSE;SQL ALTER INDEX rev_index
13、REBUID NOREVERSE;27位图索引SQL CREATE BITMAP INDEX bit_index ON order_master (orderno); 位图索引适合创建在低基数列上 位图索引不直接存储ROWID,而是存储字节位到ROWID的映射 减少响应时间 节省空间占用28索引组织表 2-1SQL CREATE TABLE ind_org_tab ( vencode NUMBER(4) PRIMARY KEY, venname VARCHAR2(20) ) ORGANIZATION INDEX; 索引组织表的数据存储在与其关联的索引中 索引中存储的是行的实际数据,而不是ROW
14、ID 基于主键访问数据 CREATE TABLE 命令与 ORGANIZATION INDEX 子句一起用于创建索引组织表29索引组织表 2-2 普通表与索引组织表的比较普通表索引组织表ROWID 唯一地标识行主键唯一地标识行隐式的 ROWID 列没有隐式的 ROWID 列基于 ROWID 的访问 基于主键的访问顺序扫描返回所有行完全索引扫描返回所有行,并按主键顺序排列支持分区不支持分区30基于函数的索引SQL CREATE INDEX lowercase_idx ON toys (LOWER(toyname); 基于一个或多个列上的函数或表达式创建的索引 表达式中不能出现聚合函数 不能在LO
15、B类型的列上创建 创建时必须具有 QUERY REWRITE 权限SQL SELECT toyid FROM toys WHERE LOWER(toyname)=doll;31索引中的分区 可以将索引存储在不同的分区中 与分区有关的索引有三种类型: 局部分区索引 在分区表上创建的索引,在每个表分区上创建独立的索引,索引的分区范围与表一致 全局分区索引 在分区表或非分区表上创建的索引,索引单独指定分区的范围,与表的分区范围或是否分区无关 全局非分区索引 在分区表上创建的全局普通索引,索引没有被分区32获取索引的信息SQL SELECT INDEX_NAME, TABLE_NAME, COLUMN
16、_NAME FROM USER_IND_COLUMNS ORDER BY INDEX_NAME, COLUMN_POSITION; 与索引有关的数据字典视图有: USER_INDEXES 用户创建的索引的信息 USER_IND_PARTITIONS 用户创建的分区索引的信息 USER_IND_COLUMNS 与索引相关的表列的信息33总结 同义词是现有数据库对象的别名 序列用于生成唯一、连续的序号 视图是基于一个或多个表的虚拟表 索引是与表相关的一个可选结构,用于提高 SQL 语句执行的性能 索引类型有标准索引、唯一索引、反向键索引、位图索引和基于函数的索引 索引组织表基于主键访问数据34作业 本章课后作业第2题