oracle 数据库模式对象,索引,序列,同义词,查看用户拥有的表,聚簇,数据库链接
数据库模式对象:
Sql代码
1.TABLE 表 用于存储数据的基本结构
2.VIEW 视图 以不同的侧面反映表的数据,是一种逻辑上的表
3.INDEX 索引 加快表的查询速度
4.CLUSTER 聚簇 将不同表的字段并用的一种特殊结构的表集合
5.SEQUENCE 序列 生成数字序列,用于在插入时自动填充表的字段
6.SYNONYM 同义词 为简化和便于记忆,给对象起的别名
7.DATABASE LINK 数据库链接 为访问远程对象创建的通道
8.STORED PROCEDURE、FUNCTION 存储过程和函数 存储于数据库中的可调用的程序和函数
9.PACKAGE、PACKAGE BODY 包和包体 将存储过程、函数及变量按功能和类别进行捆绑
10.TRIGGER 触发器 由DML操作或数据库事件触发的事件处理程序
TABLE 表 用于存储数据的基本结构
VIEW 视图 以不同的侧面反映表的数据,是一种逻辑上的表
INDEX 索引 加快表的查询速度
CLUSTER 聚簇 将不同表的字段并用的一种特殊结构的表集合
SEQUENCE 序列 生成数字序列,用于在插入时自动填充表的字段
SYNONYM 同义词 为简化和便于记忆,给对象起的别名
DATABASE LINK 数据库链接 为访问远程对象创建的通道
STORED PROCEDURE、FUNCTION 存储过程和函数 存储于数据库中的可调用的程序和函数
PACKAGE、PACKAGE BODY 包和包体 将存储过程、函数及变量按功能和类别进行捆绑
TRIGGER 触发器 由DML操作或数据库事件触发的事件处理程序
Oracle数据库的索引
索引(INDEX)是为了加快数据的查找而创建的数据库对象,特别是对大表,索引可以有效地提高查找速度,也可以保证数据的惟一性。索引是由Oracle自动使用和维护的,一旦创建成功,用户不必对索引进行直接的操作。索引是独立于表的数据库结构,即表和索引是分开存放的,当删除索引时,对拥有索引的表的数据没有影响。
在创建PRIMARY KEY和UNIQUE约束条件时,系统将自动为相应的列创建惟一(UNIQUE)索引。索引的名字同约束的名字一致。
索引有两种:B*树索引和位图(BITMAP)索引。
B*树索引是通常使用的索引,也是默认的索引类型。在这里主要讨论B*树索引。B*树是一种平衡2叉树,左右的查找路径一样。这种方法保证了对表的任何值的查找时间都相同。
B*树索引可分为:惟一索引、非惟一索引、一列简单索引和多列复合索引。
创建索引一般要掌握以下原则:只有较大的表才有必要建立索引,表的记录应该大于50条,查询数据小于总行数的2%~4%。虽然可以为表创建多个索引,但是无助于查询的索引不但不会提高效率,还会增加系统开销。因为当执行DML操作时,索引也要跟着更新,这时索引可能会降低系统的性能。一般在主键列或经常出现在WHERE子句或连接条件中的列建立索引,该列称为索引关键字。
索引的创建
创建索引不需要特定的系统权限。建立索引的语法如下:
CREATE [{UNIQUE|BITMAP}] INDEX 索引名 ON 表名(列名1[,列名2,...]);
其中:
UNIQUE代表创建惟一索引,不指明为创建非惟一索引。
BITMAP 代表创建位图索引,如果不指明该参数,则创建B*树索引。
列名是创建索引的关键字列,可以是一列或多列。
删除索引的语法是:
DROP INDEX 索引名;
删除索引的人应该是索引的创建者或拥有DROP ANY INDEX系统权限的用户。索引的删除对表没有影响。
创建和删除索引。
步骤1:创建索引:
Sql代码
1.CREATE INDEX EMP_ENAME ON EMP(ENAME);
CREATE INDEX EMP_ENAME ON EMP(ENAME);
执行结果:
索引已创建。
步骤2:查询中引用索引:
Sql代码
1.SELECT ENAME,JOB,SAL FROM EMP WHERE ENAME='SCOTT';
SELECT ENAME,JOB,SAL FROM EMP WHERE ENAME='SCOTT';
执行结果:
Sql代码
1.ENAME JOB SAL
2. ------------ ------------------- --------------------
3. SCOTT ANALYST 3000
ENAME JOB SAL
------------ ------------------- --------------------
SCOTT ANALYST 3000
步骤3:删除索引:
Sql代码
1.DROP INDEX EMP_ENAME;
DROP INDEX EMP_ENAME;
执行结果:
索引已丢弃。
说明:本例创建的是B*树非惟一简单索引。索引关键字列是ENAME。在步骤2中,因为WHERE条件中出现了索引关键字,所以查询中索引会被自动引用,但是由于行数很少,因此不会感觉到查询速度的差别。
创建复合索引。
步骤1:创建复合索引:
Sql代码
1.CREATE INDEX EMP_JOBSAL ON EMP(JOB,SAL);
CREATE INDEX EMP_JOBSAL ON EMP(JOB,SAL);
执行结果:
索引已创建。
步骤2:查询中引用索引:
Sql代码
1.SELECT ENAME,JOB,SAL FROM EMP WHERE JOB='MANAGER'AND SAL>2500;
SELECT ENAME,JOB,SAL FROM EMP WHERE JOB='MANAGER'AND SAL>2500;
执行结果:
Sql代码
1.ENAME JOB SAL
2. -------------- --------------------- -------