Oracle_数据库对象

对象一:视图
优点:
 1.简化复杂查询
 2.限制数据访问
 3.提供数据的相互独立
 4.同样的数据,可以有不同的显示方式

但视图不能提高性能,它只是表的外壳,一种虚表。
视图建立在已有表的基础之上,视图赖以建立的这些表称为基表
可以将视图理解为存储起来的select语句
视图向用户提供基表数据的另一种表现形式

我们一般不会通过视图来修改表中实际数据,因为有很多权限限制,无法修改

--第一个视图: 员工号 姓名 月薪 年薪
由于无权限,必须先以管理员身份登入:sqlplus / as sysdba
然后授予scott用户创建视图的权限:grant create view to scott

SQL> create view view1
  2  as
  3  select empno,ename,sal,sal*12 annlsal from emp;

--复杂视图:只要含有表达式,2个表以上便为复杂视图
SQL> create view view2
  2  as
  3  select empno,ename,sal,sal*12 annlsal,dname
  4  from emp e, dept d
  5  where e.deptno=d.deptno;

SQL> create or replace view view2---》如果view2存在,则会覆盖原先的view2视图,重新创建view2
  2  as
  3  select empno,ename,sal,sal*12 annlsal,dname
  4  from emp e, dept d
  5  where e.deptno=d.deptno
  6  with read only;--------->一般都是采用with read only只读,其他人无法修改表中的数据了

 

对象二:序列sequence:
可供多个用户用来产生唯一的数值的数据库对象
 1.自动提供唯一的数值
 2.共享对象
 3.主要用于提供主键值(重点)
 4.将序列值装入内存可以提高访问效率
序列完整定义:
 CREATE SEQUENCE myseq
  [INCREMENT BY n]--------------------->可选,上升间隔:默认是为1,如果为10,则10,20,30...
  [START WITH n]----------------------->可选,起始值,默认为1
  [{MAXVALUE n|NOMAXVALUE}]------------>可选,设置最大值,默认为主机操作系统允许的最大值
  [{MINVALUE n|NOMINVALUE}]------------>可选,设置最小值,默认为主机操作系统允许的最小值
  [{CYCLE|NOCYCLE}]-------------------->可选,是否循环数值,一般不会设置该属性,默认为不循环
 
SQL> create sequence myseq;

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

--NEXTVAL,CURRVAL伪列
记住:nextval一定在currval之前制定,2则应同时有效

SQL> select myseq.CURRVAL  from dual;
ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义

SQL> select myseq.NEXTVAL  from dual;
SQL> select myseq.CURRVAL  from dual;----》这样才会有结果

SQL> insert into testseq values(myseq.NEXTVAL,'aaa');
---------------》由于之前已使用过myseq,这里插入的开始值为前面的值的后一个,不会是从1开始

                                                                                              
序列不连续:原因
 1. 内存,长度20
 2. 序列是一个公有对象
 3. rollback序列不连续,使用rollback后,之前的值都没有了,然而下一个值还是依旧上升
 


对象三:索引:分为“B树索引(二叉树)”和“位图索引”
 1.其被破坏或删除不会对表产生影响,其影响的只是查询速度
 2.索引一旦被建立,是由Oracle内部管理系统自动维护,并且由它来决定何时使用,用户无需维护和指定使用哪条索引
 3.表被删除,则索引就会被删除
 4.原理是通过指针加速Oracle服务器的查询速度
 5.通过快速定位数据方法,减少磁盘I/O

SQL> create index myindex on emp(deptno);

--何时创建索引:
 1.列中数据值分布范围很广
 2.列经常在WHERE子句中或连接条件中出现
 3.表经常被访问而且数据量很大,访问的数据却是整个数据总量的2%~4%

对象四:同义词---synonym
SQL> select count(*) from hr.EMPLOYEES;
出现错误:
ORA-00942: 表或视图不存在

SQL> --为hr.EMPLOYEES起别名
SQL> create SYNONYM  hremp for hr.EMPLOYEES;
出现错误:
ORA-01031: 权限不足 --->需要管理员授权:grant select on EMPLOYEES to scott

SQL> select count(*) from hremp;
---------》出现正确结果

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值