同义词:将复杂的表名简化成一个简单的字符串,以后就可以通过简单字符串访问到 复杂的表 --私有同义词:自己创建自己使用 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 将数据和索引都在同表里,不建议使用,主要因为其不能分区