设为首页 加入收藏

TOP

Oracle学习(10):其他数据库对象(二)
2015-11-21 01:43:10 来源: 作者: 【 】 浏览:1
Tags:Oracle 学习 其他 数据库 对象
VALUE 999999

NOCACHE

NOCYCLE;

修改序列注意事项

l必须是序列的拥有者或对序列有 ALTER权限 l只有将来的序列值会被改变 l改变序列的初始值只能通过删除序列之后重建序列的方法实现


删除序列

l使用DROPSEQUENCE 语句删除序列 l删除之后,序列不能再次被引用
DROP SEQUENCE dept_deptid_seq ;

序列语句实例

SQL> --序列

SQL> create sequence myseq;


序列已创建。


SQL> create table testseq
2 (tid number,tname varchar2(20));


表已创建。


SQL> --insert into testseq values( ,'aaa');
SQL> select myseq.currval from dual;
select myseq.currval from dual
*
第 1 行出现错误:
ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义




SQL> select myseq.nextval from dual;


NEXTVAL
----------
1


已选择 1 行。


SQL> insert into testseq values(myseq.nextval ,'aaa');


已创建 1 行。


SQL> insert into testseq values(myseq.nextval ,'aaa');


已创建 1 行。


SQL> /


已创建 1 行。


SQL> select * from testseq;


TID TNAME
---------- --------------------
2 aaa
3 aaa
4 aaa


已选择3行。


SQL> select myseq.currval from dual;


CURRVAL
----------
4


已选择 1 行。


SQL> hostcls
SP2-0042: 未知命令 "hostcls" - 其余行忽略。
SQL> host cls

索引

索引:

一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中 索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度 索引一旦建立, Oracle 管理 系统会对其进行自动维护, 而且由Oracle 管理系统决定何时使用索引. 用户不用在查询语句中指定使用哪个索引 在删除一个表时, 所有基于该表的索引会自动被删除 通过指针加速 Oracle 服务器的查询速度 通过快速定位数据的方法,减少磁盘I/O

创建索引

自动创建: 在定义PRIMARYKEY 或UNIQUE 约束后系统自动在相应的列上创建唯一性索引 手动创建: 用户可以在其它列上创建非唯一的索引,以加速查询

l在一个或多个列上创建索引

CREATE INDEXindex

ON table(column[,column]...);

l在表EMPLOYEES的列LAST_NAME 上创建索引

CREATE INDEX emp_last_name_idx

ON employees(last_name);

Index created.

何时创建索引

以下情况可以创建索引:

l列中数据值分布范围很广
l列经常在WHERE 子句或连接条件中出现
l表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%


何时不要创建索引

下列情况不要创建索引:

l表很小
l列不经常作为连接条件或出现在WHERE子句中
l查询的数据大于2%到4%
l表经常更新


查询索引

l可以使用数据字典视图USER_INDEXES 和USER_IND_COLUMNS 查看索引的信息

SELECT ic.index_name, ic.column_name,

ic.column_positioncol_pos,ix.uniqueness

FROM user_indexes ix, user_ind_columns ic

WHERE ic.index_name = ix.index_name

AND ic.table_name = 'EMPLOYEES';


删除索引

l使用DROPINDEX 命令删除索引

DROP INDEX index;

l删除索引UPPER_LAST_NAME_IDX

DROP INDEX upper_last_name_idx;


l只有索引的拥有者或拥有DROPANY INDEX权限的用户才可以删除索引


索引语句示例

SQL> --索引

SQL> create index myindex on emp(deptno,job);


索引已创建。


SQL> --同义词:别名
SQL> show user
USER 为 "SCOTT"
SQL> select count(*) from hr.EMPLOYEES;
select count(*) from hr.EMPLOYEES
*
第 1 行出现错误:
ORA-00942: 表或视图不存在




SQL> /


COUNT(*)
----------
107


已选择 1 行。

同义词

为何使用同义词

使用同义词访问相同的对象:

l方便访问其它用户的对象
l缩短对象名字的长度



创建和删除同义词

l为视图DEPT_SUM_VU 创建同义词

CREATE SYNONYM d_sum

FOR dept_sum_vu;

l删除同义词

DROP SYNONYM d_sum;



同义词语句实例


SQL> create synonym hremp for hr.EMPLOYEES;
create synonym hremp for hr.EMPLOYEES
*
第 1 行出现错误:
ORA-01031: 权限不足




SQL> /

同义词已创建。


SQL> select count(*) from hremp;


COUNT(*)
----------
107


已选择 1 行。


SQL> select * from tab;


TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP10 TABLE
EMP20 TABLE
TESTSAVEPOINT TABLE
TESTDELETE TABLE
BIN$91xa7gtoQfiGlzbFlex5HQ==$0 TABLE
TEST3 TABLE
MYPERSON TABLE


TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
EMPINCOMEVIEW VIEW
TESTSEQ TABLE
HREMP SYNONYM


已选择14行。


SQL> spool off
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle学习(9):创建和管理表 下一篇简化SQL式计算之行间计算

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: