对象 | 描述 |
表 | 基本的数据存储集合,由行和列组成 |
视图 | 从表中抽出的逻辑上相关的数据集合 |
序列 | 提供有规律的数值 |
索引 | 提高查询的效率 |
同义词 | 给对象起别名 |
序列:主要提供主键值,将序列值装入内存可以提高访问效率
create sequence empseq increment by 10 --每次增长10 start with 10 --从10开始 maxvalue 100 --提供的最大值 cycle --需要循环 nocache --不需要缓存登录
序列:主要用来提供主键值
select empseq.nextval from dual;
--序列使用:
create table emp11 as select employee_id,last_name,salary from employees where 1=2;
insert into emp11 values(empseq.nextval,'DD',5000);
EMPLOYEE_ID LAST_NAME SALARY ----------- ------------------------- ---------- 41 DD 5000
--修改序列
alter sequence empseq increment by 1 nocycle ; insert into emp11 values(empseq.nextval,'EE',6000);
EMPLOYEE_ID LAST_NAME SALARY ----------- ------------------------- ---------- 41 DD 5000 42 EE 6000
注意:修改系列的初始值只能通过删除序列之后重建序列的方法实现
裂缝:多个表使用同一个序列
回滚
系统异常
--查看序列:
select sequence_name ,min_value,max_value,increment_by,last_number from user_sequences;
SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER ------------------------------ ---------- ---------- ------------ ----------- MVIEW$_ADVSEQ_GENERIC 1 4294967295 1 1 MVIEW$_ADVSEQ_ID 1 4294967295 1 1 LOGMNR_EVOLVE_SEQ$ 1 1.0E+27 1 1
--删除序列:
drop sequence empseq;
索引:
-- 索引被损坏或删除,不会对表产生影响,其影响的只是查询的速度
--通过指针加速 orale服务器的查询速度
--创建索引:自动创建:在定义primary key或unique约束后系统自动在相应的列上创建唯一性索引
手动创建: 用户可以在其他列上创建非唯一的索引,以加速查询
-- 手动创建:
create index emp1_id_ix
on emp1(employee_id);
--删除索引:
drop index emp1_id_ix;
--什么时候使用索引较好:
列中数据分布范围广
列经常在where字句或连接条件中出现
表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%
--不要创建索引:表小表
表常更新
列经常在where字句或连接条件中出现
查询的数据大于2%到4%
同义词(synonym):创建及删除
create synonym e for employees;
drop synonym e;
练习:
--1.创建序列dept_id_seq,开始值为200,每次增长10,最大值为10000
create sequence dept_id_seq start with 200 increment by 10 maxvalue 10000
--2.使用序列向表dept中插入数据
create table dept as select department_id id,department_name name from departments where 1=2
insert into dept01 values(dept_id_seq.nextval,'Account')