一、索引
1、概念:
是一个单独的、物理的数据库对象
用于存放表中每一条记录的位置的对象。
在创建索引时,先要对索引字段进行排序。
索引由Oracle自动维护
优点:提高查询速度
缺点:创建和维护索引需要时间;索引需要物理空间,随着数据量的增大而增大;
2、创建方式:
自动创建:通过约束,系统创建
手工创建
create [unique] [bitmap] index index_name on table_name(column_name)
[reverse] [tablespace tablespace_name]
例如:
创建基于函数的索引
create index ename_lower_index
on emp(lower(ename));
select * from emp
where lower(ename)=‘smith’;
创建复合索引
create index emp_idx on emp(job,ename);
3、删除索引
删除索引与索引创建时采用的方式有关
手动创建的索引,通过命令删除
drop index index_name;
自动创建的索引
通过禁用约束或删除约束的方式来删除对应的索引。
删除表,则会完全删除所有索引
4、修改索引
alter index index_name rename to new index_name
alter index dept_deptno_pk rename to pk_deptno_dept;
二、序列
概念:
1)是数据库对象。
2)用于产生一系列唯一的数字值
3)序列号的生成独立于表
4)同一序列生成器可用于一个或多个表
5)经常用来产生主键值
1、创建
使用CREATE SEQUENCE语句创建序列
例如:
创建一个名称为 dept_seq 的序列,可以给DEPT表的主键提供值
create sequence dept_seq
increment by 10
start with 50
maxvalue 100
cycle
nocache;
2、查看序列
使用视图 USER_SEQUENCES 可以查到序列信息
desc USER_SEQUENCES
亦可以查看序列的部分信息:
select equence_name,
min_value,max_value,cache_size
from user_sequences;
3、使用序列
伪列的引入
NEXTVAL 返回下一个有效的序列值.每执行一次会返回一个新的数值。(类似于指针的用法)
CURRVAL返回当前的序列值.
例如:创建一个学生表,并通过伪列来给学生表的某记录的字段赋值
–创建学生表
create table students(
sno number(9),
sname varchar2(10),
sex char(4),
age number(2)
);
–使用伪列插入记录
insert into students values(stu_seq.nextval,‘xiaobai’,‘男’,20);
insert into students values(stu_seq.nextval,‘ruyan’,‘女’,19);
select * from students;
注意:在使用伪列时,首先要创建一个序列,具体创建该序列的oracle命令省略
4、修改序列
可以修改增量值,最大值,最小值,循环选项,缓存选项,
不可以修改初始值
ALTER SEQUENCE dept_deptno
INCREMENT BY 1
MAXVALUE 999999
NOCACHE
NOCYCLE;
5、删除序列
使用 DROP SEQUENCE 语句删除序列.
三、同义词
同义词是数据库对象的别名。通过同义词可以简化对象的访问。
创建:
CREATE [PUBLIC] SYNONYM 同义词名
FOR 对象名;
public 选项表示所有用户均可使用.
删除同义词:
使用drop synonym