索引,视图,权限

同义词:将复杂的表名简化成一个简单的字符串,以后就可以通过简单字符串访问到
         复杂的表

--私有同义词:自己创建自己使用
create synonym demp for scott.emp
 select * from demp;

--公有同义词,可以被所有有权限的人使用
create public synonym eemp for scott.emp;

--修改同义词
create or replace public synonym eemp for scott.dept;

--删除同义词
drop synonym demp;
drop public synonym eemp;

//---------------------------------------------------------------------------------------

mysql,sqlsever都有自己的自动增长列,auto_increment, identity(1,1)
oracle没有定义好的自动增长列,需要自己手工创建,创建的叫序列sequence

create sequence s_abc  --序列名
start with 1    --从1开始
increment by 1  --每次增长1
maxvalue 99999  --最大值
minvalue 1     --最小值
cycle         --用完后是否循环,nocycle就是不循环
cache 20     --在缓存中准备好20个序列

--使用序列
select s_abc.nextval from dual;
--查看序列用到了哪一个
 select s_abc.currval from dual;
--修改序列 
alter sequence s_abc maxvalue 9999999
--删除序列
drop sequence s_abc

//--------------------------------------------------------------------------------------
视图 view 

  create or replace view v_emp
  as
  select empno as 用户编号,ename as 用户名
*  from scott.emp

1. 简化SQL语句的访问:比如说一个非常复杂的sql语句,我们可以创建成一个视图,
     然后再要使用这个非常复杂的sql语句的时候,就可以使用视图代替了
2. 视图可以封装原始表的列,从而隐藏访问数据的细节,让视图使用者不知道数据从哪张表来
   从哪些列来
3. 注意,视图中并没有存放任何数据,是用户在使用时,临时从视图指定的语句得到数据
         默认创建的视图,是可以进行增,删除,改的
  
 create or replace view v_emp
 as 
 select * from scott.emp
 with check option constraint empno; --设定empno这一列不能被修改

警告:无论视图是如何设置的,都不要企图使用视图去修改数据,记住什么是view

4. 创建视图时,一般是建在已有表上的,但有时可以建在不存在的表上
    开发中并行开发,可能出现表和视图开发不平行情况,所以要先建立伪视图
    当表出现后,就会变成真视图
    create or replace force view v_emp1
    as
    select * from emp1

--多表查询的视图
SQL> create or replace view v_emp2
    as
    select empno,ename,emp.deptno,dname from scott.emp emp inner join scott.dept dept on emp.deptno
      =dept.deptno;

--删除视图
drop view v_emp2;
    
//-------------------------------------------------------------------------------------------------------------
索引就像字典中的目录,如果没有目录,查字典要一页一页去找,同样数据库的表中的内容也要一行一行去找
 字典有了目录,可以通过目录快速定位页数
表如果建立了目录(index),就可以快速定位我们要的行,索引的建立需要我们定义,但使用时会有DBMS自动调用

强调:1.索引要建立在经常查询的列上2.索引并不是越多越好,可以加快查询速度,但是增删改的速度会降低

--标准索引
 create index ix_emp on e(eid); --创建 索引 ix_emp 在 e表(eid列上);

--唯一索引:创建在没有重复值的列上,比如empno这一列,比如主键,如果创建表时创建了主键,默认主键就会有唯一索引
 create unique index ix_emp1 on c(cid);

--组合索引: 创建在几列上的,如果查询时在where条件中同时出现了这几列,将会大大的加快查询的速度
create index ix_emp2 on c(cname,cdate);


--反向索引:建立在增长型的列上的,比如序列
create index ix_emp2 on d(cid) reverse;
alter index ix_emp3 rebuild noreverse;--将反向索引改为正向(标准索引)

-- 位图索引:主要是建立在有重复值出现的列中,多用在外键上
create bitmap index ix_emp4 on d(did)
-- 基于函数的索引:基于sql函数的索引,当用户调用函数时将加快查询速度
create index ix_emp5 on d(len(cname))--在d表的cname的列上建立一个len的函数,当用户的查询条件为len(cname)将加快查询速度

--索引组织表
create table i(
iid number,
iname varchar2(10))
organizition index
将数据和索引都在同表里,不建议使用,主要因为其不能分区

 

转载于:https://www.cnblogs.com/zousheng7018/archive/2012/10/19/2730847.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值