《java培训之Oracle对象课件》由会员分享,可在线阅读,更多相关《java培训之Oracle对象课件(33页珍藏版)》请在金锄头文库上搜索。
1、Oracle对象,回顾,在关系型数据库中,我们总是可以把SQL语句分为四大类:DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)、TCL(事务处理语言) Oracle 数据类型主要包括字符、数值、日期时间、大对象类型等等 Oracle 支持的 SQL 操作符包括算术、比较、逻辑、集合、连接操作符 Oracle 提供一系列用于执行特定操作的函数:单行、分组、分析函数,本章目标,理解数据库对象的概念和分类 熟练掌握用户、表、约束数据库对象的使用 掌握同义词、序列、视图、索引数据库对象的使用 理解数据字典的概念,掌握数据字典的相关信息,数据库对象简介,Oracle 数据库对象又称
2、模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 前面我们学过的数据库对象有用户、表、约束 其他数据库对象包括:,数据库对象,同义词,序列,视图,索引,用 户,表,约 束,同义词,同义词是现有对象的一个别名。 简化SQL语句 隐藏对象的名称和所有者 提供对对象的公共访问 同义词共有两种类型:,同义词,私有同义词,公有同义词,私有同义词只能在其模式内访问,且不能与当前模式的对象同名。,公有同义词可被所有的数据库用户访问。,同义词,CREATE SYNONYM emp FOR SCOTT.emp;,SCOTT.emp的别名,模式名,表名,私有同义词,公有同义词,CREATE PUBLI
3、C SYNONYM emp_syn FOR SCOTT.emp;,同义词名称,同义词,创建或替换现有的同义词,CREATE OR REPLACE SYNONYM emp_syn FOR SCOTT.emp;,替换现有的同义词,SQL DROP SYNONYM emp;,SQL DROP PUBLIC SYNONYM emp_syn;,删除同义词,序列,序列是用于生成唯一、连续序号的对象 序列可以是升序的,也可以是降序的 使用CREATE SEQUENCE语句创建序列,SQL CREATE SEQUENCE toys_seq START WITH 10 INCREMENT BY 10 MAXVA
4、LUE 2000 MINVALUE 10 NOCYCLE CACHE 10;,指定第一个序号从 10 开始,指定序号之间的间隔为 10,表示序列的最大值为 2000,表示序列的最小值为 10,在达到最大值后停止生成下一个值,指定内存中预先分配的序号数,访问序列,通过序列的伪列来访问序列的值 NEXTVAL 返回序列的下一个值 CURRVAL 返回序列的当前值,SQL INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, TWENTY, 25); SQL INSERT INTO toys (toyid, to
5、yname, toyprice) VALUES ( toys_seq.NEXTVAL, MAGIC PENCIL, 75);,指定序列的下一个值,SQL SELECT toys_seq.CURRVAL FROM dual;,检索序列的当前值,更改和删除序列,SQL ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE;,使用ALTER SEQUENCE语句修改序列, 不能更改序列的START WITH参数,使用DROP SEQUENCE语句删除序列,SQL DROP SEQUENCE toys_seq;,视图,视图以经过定制的方式显示来自一个或多个表的数据 视
6、图可以视为“虚拟表”或“存储的查询” 创建视图所依据的表称为“基表” 视图的优点有: 提供了另外一种级别的表安全性 隐藏的数据的复杂性 简化的用户的SQL命令 隔离基表结构的改变 通过重命名列,从另一个角度提供数据,创建视图,Stud_details,Stud_view,创建视图,CREATE VIEW stud_view AS SELECT studno, studname, subno FROM Stud_details;,创建视图,创建视图的语法:,CREATE OR REPLACE FORCE VIEW view_name (alias, alias.) AS select_state
7、ment WITH CHECK OPTION WITH READ ONLY;,创建视图,使用 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;,创建带有错误的视图,
8、CREATE FORCE VIEW ven AS SELECT * FROM venmaster;,联接视图,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,联接视图,联接视图,创建外联接视图,CREATE VIEW ven_ord_outj_view AS SELECT vm
9、.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;,视图上的DML语句,在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELET
10、E 视图上的DML语句有如下限制: 只能修改一个底层的基表 如果修改违反了基表的约束条件,则无法更新视图 如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图 如果视图包含伪列或表达式,则将无法更新视图,键保留表,Stud_details,Sub_details,键保留表,因为 Studno 既是 Stud_details 中的主键, 也是联接结果中的主键,Stud_details 为什么 是键保留表?,联接视图,视图中的函数,视图中可以使用单行函数、分组函数和表达式 使用DROP VIEW语句删除视图,CREATE VIEW it
11、em_view AS SELECT itemcode, LOWER(itemdesc) item_desc FROM itemfile;,SQL DROP VIEW toys_view;,索引,索引是与表相关的一个可选结构 用以提高 SQL 语句执行的性能 减少磁盘I/O 使用 CREATE INDEX 语句创建索引 在逻辑上和物理上都独立于表的数据 Oracle 自动维护索引,索引,索引有各种类型,除了标准索引外,还有一些特殊类型的索引:,索引的类型,基于函数的索引,反向键索引,位图索引,唯一索引,组合索引,索引,SQL CREATE INDEX item_index ON itemfile
12、 (itemcode) TABLESPACE index_tbs;,创建标准索引,重建索引,SQL ALTER INDEX item_index REBUILD;,删除索引,SQL DROP INDEX item_index;,唯一索引,唯一索引确保在定义索引的列中没有重复值 Oracle 自动在表的主键列上创建唯一索引 使用CREATE UNIQUE INDEX语句创建唯一索引,SQL CREATE UNIQUE INDEX item_index ON itemfile (itemcode);,组合索引,组合索引是在表的多个列上创建的索引 索引中列的顺序是任意的 如果 SQL 语句的 WHE
13、RE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度,SQL CREATE INDEX comp_index ON itemfile(p_category, itemrate);,反向键索引,反向键索引反转索引列键值的每个字节 通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上 创建索引时使用REVERSE关键字,SQL CREATE INDEX rev_index ON itemfile (itemcode) REVERSE;,SQL ALTER INDEX rev_index REBUID NOREVERSE;,位图索引,位图索引适合创建在低基数列上 位图索引不直接存储
14、ROWID,而是存储字节位到ROWID的映射 减少响应时间 节省空间占用,SQL CREATE BITMAP INDEX bit_index ON order_master (orderno);,索引组织表,索引组织表的数据存储在与其关联的索引中 索引中存储的是行的实际数据,而不是ROWID 基于主键访问数据 CREATE TABLE 命令与 ORGANIZATION INDEX 子句一起用于创建索引组织表,SQL CREATE TABLE ind_org_tab ( vencode NUMBER(4) PRIMARY KEY, venname VARCHAR2(20) ) ORGANIZAT
15、ION INDEX;,索引组织表,普通表与索引组织表的比较,基于函数的索引,基于一个或多个列上的函数或表达式创建的索引 表达式中不能出现聚合函数 不能在LOB类型的列上创建 创建时必须具有 QUERY REWRITE 权限,SQL CREATE INDEX lowercase_idx ON toys (LOWER(toyname);,SQL SELECT toyid FROM toys WHERE LOWER(toyname)=doll;,获取索引的信息,与索引有关的数据字典视图有: USER_INDEXES 用户创建的索引的信息 USER_IND_PARTITIONS 用户创建的分区索引的信
16、息 USER_IND_COLUMNS 与索引相关的表列的信息,SQL SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME FROM USER_IND_COLUMNS ORDER BY INDEX_NAME, COLUMN_POSITION;,数据字典,数据字典 (Data dictionary) 是一种用户可以访问的记录数据库和应用程序元数据的目录。 数据字典通常包括五个部分: 数据项 数据结构 数据流 数据存储 处理过程 数据字典分为: 主动数据字典,是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。 被动数据字典,是指修改时必须手工更新其内容的数据字典。,数据字典,数据字典可能包含的信息,例如: 数据库设计资料 储存的SQL程序 用户权限 用户统计,数据库的过程中的信息 数据库增长统计 数据库性能统计,SQL select * from dictionary; TABLE_N