Oracle-----数据库对象
Oracle数据对象
表 存储数据
序列 自动增长的数值
sqe_a.nextval 下一个值,
sqe_a.currval 当前值
视图[虚表]
实质:存储了编译好的SQL查询语句,打开视图时,直接运行查询语句[效率高]
同义词:相当于 “别名”
索引:(默认、唯一、函数、反向键索引)
优化搜索、排序性能;但会占用大量存储空间。
默认索引 PK主键
唯一索引 UK
反向键索引 1124801
函数索引 ename like '李%'
lower(ename)like '李%'
to_char(date,"yyyy-MM")
位图索引
低基数索引(可以数过来,值相对较少)
函数
系统定义的
自定义函数[把常用的计算式,定义成函数,可在多出调用]
过程
存储过程
触发器
定义触发器,自动调用。
一、
同义词是现有对象的一个别名。
1. 简化SQL语句
2. 隐藏对象的名称和所有者(隐藏原始对象内容)
3. 提供对对象的公共访问
同义词共有两种类型:
1.公有同义词可被所有的数据库用户访问。
2.私有同义词只能在其模式内访问,且不能与当前模式的对象同名。
二、
序列是用于生成唯一、连续序号的对象
序列可以是升序的,也可以是降序的
使用CREATE SEQUENCE语句创建序列
序列信息
从user_sequences中查出所有的序列信息。
select * from user_sequences;
修改序列
使用ALTER SEQUENCE语句修改序列,
不能更改序列的START WITH参数
ALTER SEQUENCE toys_seq MAXVALUE 5000CYCLE;
删除序列
使用DROP SEQUENCE语句删除序列
DROPSEQUENCE toys_seq;
三、视图
视图以经过定制的方式显示来自一个或多个表的数据
视图可以视为“虚拟表”或“存储的查询”
创建视图所依据的表称为“基表”
视图的优点有:
1. 提供了另外一种级别的表安全性
2. 隐藏的数据的复杂性
3. 简化的用户的SQL命令
4. 隔离基表结构的改变
5. 通过重命名列,从另一个角度提供数据
CREATE VIEW stud_view
AS
SELECT studno, studname, subno
FROM Stud_details; --创建单表视图;操作单表视图就相当于操作表
创建视图的语法:
WITH CHECKOPTION CONSTRAINT _NAME :表示增加一个检查约束,INSERT和UPDATE时候必须要求: INSERT时候要求插入的数据必须符合定义时候设置的where条件一致,UPDATE 时候只能改除where条件列以外的其他数据列或者修改的条件列的值符合where条件
多表视图(联接视图)
CREATE VIEW Stud_sub_view AS
SELECT Studno, Studname, Submrks, Subname
FROM Stud_details, Sub_Details
WHERE Stud_details.Subno=Sub_details.Subno; --where指定 多个表的连接关系
CREATE VIEWven_ord_outj_view AS
SELECTvm.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 JOINorder_master om
ON vm.vencode = om.vencode;
视图上的DML语句
在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE
视图上的DML语句有如下限制:
1. 只能修改一个底层的基表
2. 如果修改违反了基表的约束条件,则无法更新视图
3. 如果视图包含连接操作符、DISTINCT关键字、集合操作符、聚合函数或GROUP BY 子句,则将无法更新视图
4. 如果视图包含伪列或表达式,则将无法更新视图
键保留表
例如:Studno 既是 Stud_details中的主键,也是联接结果中的主键
视图中可以使用单行函数、分组函数和表达式
四、索引
索引是与表相关的一个可选结构
用以提高 SQL 语句执行的性能
减少磁盘I/O
使用 CREATEINDEX 语句创建索引
在逻辑上和物理上都独立于表的数据
Oracle 自动维护索引
索引的工作原理是与一个叫做ROWID的概念紧密相关的,Oracle9i在创建数据表时,默认会为每个数据表建立一个隐含字段,叫ROWID。
在向数据表中插入记录时,系统将自动为每条记录分配惟一的一个ROWID号,利用这个ROWID号,就可以快速定位到记录。
唯一索引
唯一索引确保在定义索引的列中没有重复值
Oracle 自动在表的主键列上创建唯一索引
使用CREATE UNIQUE INDEX语句创建唯一索引
CREATE UNIQUE INDEXitem_index
ON itemfile (itemcode);
组合索引
组合索引是在表的多个列上创建的索引
索引中列的顺序是任意的
如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度
反向键索引
反向键索引反转索引列键值的每个字节
通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上
创建索引时使用REVERSE关键字
CREATE INDEX rev_index
ON itemfile (itemcode)REVERSE;
位图索引
位图索引适合创建在低基数列上
位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
减少响应时间
节省空间占用
CREATE BITMAP INDEX bit_index
ON order_master(orderno);
索引组织表
索引组织表的数据存储在与其关联的索引中
索引中存储的是行的实际数据,而不是ROWID
基于主键访问数据
CREATE TABLE 命令与 ORGANIZATIONINDEX 子句一起用于创建索引组织表
CREATE TABLE ind_org_tab (
vencode NUMBER(4)PRIMARY KEY,
venname VARCHAR2(20)
)
ORGANIZATION INDEX;
基于函数的索引
基于一个或多个列上的函数或表达式创建的索引
表达式中不能出现聚合函数
不能在LOB类型的列上创建
创建时必须具有 QUERY REWRITE权限
当查询使用了函数的时候,索引将不再使用,所以要建立函数索引
CREATE INDEX lowercase_idx
ON toys (LOWER(toyname));
总结:
同义词是现有数据库对象的别名
序列用于生成唯一、连续的序号
视图是基于一个或多个表的虚拟表
索引是与表相关的一个可选结构,用于提高 SQL语句执行的性能
索引类型有标准索引、唯一索引、反向键索引、位图索引和基于函数的索引
索引组织表基于主键访问数据