oracle(六)-数据库对象

0.概览

对象

英文名

描述

table由行和列组成,用于存储数据
视图view从表中抽出的逻辑上相关的数据集合
序列sequence提供有规律的数值,主要用于提供主键值,一般用于insert
索引index提高查询效率
同义词synonym给对象起别名

1.视图

创建简单视图:create view industryview as select * from t_industry;

该简单视图可以用于crud。但不建议通过视图对表进行修改。

查看视图结构:desc industryview ;

通过视图进行查询:select * from industryview;

创建只读视图:create or replace view industryview as select * from t_industry with read only;

删除视图:drop view industryview;

 

视图是一种虚表,视图赖以建立的表称为该视图的基表

视图分为简单视图复杂视图

特性

简单视图

复杂视图

表的数量一个一个或多个
函数没有
分组没有
DML操作可以有时可以

当视图中含有以下元素之一时,不能进行DML操作:

1.组函数

2.group by 语句

3.distinct 关键字

4.rownum 伪列

创建复杂视图:

查询各部门的最低工资,最高工资和平均工资

create view dept_view (name,minsal,maxsal,avgsal) as select d.dept_name ,min(e.salary),mix(e.salary),avg(e.salary)

from emp e,dept d where e.dept_id = d.dept_id group by d.dept_id;

视图的优点:

1.限制数据访问

2.简化复杂查询

注意:视图不能提高性能。

 

2.序列

创建序列

创建序列:create sequence myseq;

完整语句:create sequence myseq2 INCREMENT BY 1 START WITH 1 MAXVALUE 99999 NOCACHE NOCYCLE; 不使用循环--NOCYCLE

create sequence SEQ_T_INDUSTRY increment by 1 start with 1 minvalue 1 maxvalue 9999999999999 cache 50;

查看下一个序列值:select myseq.nextval from dual;

查看当前序列值:select myseq.currval from dual;

注意nextval 应在currval 之前指定,二者应同时有效。

应用场景:

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

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

注意:序列不能被rollback,即:当插入的数据被回滚后,再次插入数据,序列值还是从未被回滚的时候继续增加下去。

序列出现裂缝的情况:

1.insert回滚

2.多个表使用同一个序列

3.系统异常

查询序列:user_sequences   last_number

select * from user_sequences;

如果指定为NOCACHE 选项,则last_number显示的值为nextval 的值。

如果使用了cache则last_number显示的是下一个缓存段开始的第一个数据,不能看出nextval值,只能推断nextval的值小于该值。

使用缓存可以提高访问效率

修改序列

alter sequence myseq2 INCREMENT BY 2 MAXVALUE 99999 NOCACHE NOCYCLE;

相对于创建序列,修改序列没有START WITH。所有想要改变序列的初始值,只能通过删除序列后重建序列的方法实现。

修改序列只有将来的序列值受到影响,之前已经生成的序列中不会受到影响。

删除序列

drop sequence myseq2;

删除后序列不能再被引用。

3.索引

创建索引

create index myindex on testseq(tname);

查询索引  user_indexes  user_ind_columns

select * from user_indexes;
select * from user_ind_columns;

select uic.index_name,uic.column_name,uic.column_position,ui.uniqueness
from user_indexes ui ,user_ind_columns uic
where ui.index_name = uic.index_name
and ui.table_name = 'TESTSEQ';  --注意:此时表名要大写。

删除索引:

drop index myindex ;

4.同义词

创建同义词:create synonym testseq_alias for testseq;--为表创建同义词,也可以为视图创建同义词
通过同义词进行查询:select * from testseq_alias;

删除同义词:drop synonym testseq_alias ;

 

同义词的意义:

1.方便访问其他用户的对象;

2.缩短对象名字的长度,方便偷懒。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值