常见的数据库对象

对象 描述
基本的数据存储集合,由行和列组成
视图 从表中抽出的逻辑上相关的数据集合
序列 提供有规律的数值
索引 提高查询的效率
同义词 给对象起别名

序列:主要提供主键值,将序列值装入内存可以提高访问效率

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')
All that work will definitely pay off
原文地址:https://www.cnblogs.com/afangfang/p/12561251.html