课程七 其他数据库对象
SEQUENCE
创建实例:
SQL> CREATE SEQUENCE s_dept_id
2 INCREMENT BY 1
3 START WITH 51
4 MAXVALUE 9999999
5 NOCACHE
6 NOCYCLE;
Sequence created.
1、NEXTVAL和CURRVAL的用法
只有在INSERT 中,才可以作为子查询出现。
以下几个方面不可用子查询:
SELECT 子句OF A VIEW
有DISTINCT的出现的SELECT。
有GROUP BY,HAVING,ORDER BY的SELECT 子句。
SELECT 或DELETE,UPDATE 中的子查询。
DEFAULT选项中不能用。
2、编辑SEQUENCE
只有OWNER或有ALTER权限的用户才能修改SEQUENCE
未来的NUMBER受修改的影响。
不能修改START WITH,如果变,则要RE-CREATE。
修改会受到某些有效性检验的限制,如MAXVALUE
3、删除:
DROP SEQUENCE sequence;
ORACLE对象之INDEX
一、INDEX概述:
是ORACLE的一种数据对象,用POINTER来加速查询行。通过快速路径存取方法定位数据并减少I/O。 INDEX独立于
表。INDEX由ORACLE SERVER来使用和保持。
二、索引如何建立?
1、自动:通过PRIMARY KEY和UNIQUE KEY约束来建立。
2、用户手工建立非唯一性索引。
三、创建方法:
语法:CREATE INDEX index
ON table (column[, column]...);
何时建立INDEX:
此列经常被放到WHERE字段或JOIN来作条件查询。
此列含有大量的数据。
此列含有大量的空值。
两个或几个列经常同时放到WHERE字段进行组合查询
表很大而且只有少于2-4% 的ROW可能被查询的时候。
以下情况不要建立索引:
表很小;
表被更新频繁。
四、查看已经存在的索引:
1、USER_INDEXES可以查询索引名和类型。
2、USER_IND_COLUMNS包含索引名、表名、列名。
实例:
SQL> SELECT ic.index_name, ic.column_name,
2 ic.column_position col_pos, ix.uniqueness
3 FROM user_indexes ix, user_ind_columns ic
4 WHERE ic.index_name = ix.index_name
5 AND ic.table_name = ’S_EMP’;
五、删除索引:
DROP INDEX index;
SYNONYMS 同义词
语法:
CREATE [PUBLIC] SYNONYM synonym for object;
注意:此对象不能包含在一个包里;
一个私有的同义词不能与同一USER的其他对象重名。
DROP SYNONYM D_SUM;