Oracle数据库对象(五)

一、同义词

  1. Oracle中有些对象的名称很长, 写查询语句很麻烦,同义词是现有对象的一个别名。
    a、简化SQL语句
    b、隐藏对象的名称和所有者
    c、提供对对象的公共访问

  2. 同义词共有两种类型:
    公有同义词 可被所有的数据库用户访问。
    私有同义词 只能在其模式内访向,且不能与当前模式的对象同名。

  3. 创建私有同义词以及使用私有同义词

create synonym 同义词名称 FOR 用户名.表名;
select * from 同义词名称;
  1. 创建公有同义词以及使用公有同义词
create public synonym 同义词名称 FOR 用户名.表名;
select * from 同义词名称;
  1. 删除同义词
drop synonym 私有同义词名称;
drop public synonym 公有同义词名称;

二、序列

  1. 创建序列
CREATE SEQUENCE stu_id
	START WITH 10   --定义序列的初始值(即产生的第一个值),默认为1。
	INCREMENT BY 10  --定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。
	MAXVALUE 2000 
	MINVALUE 10
	NOCYCLE
	CACHE 10;

alter system flush shared pool; --将缓存清空

注:

  • INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。

  • START WITH 定义序列的初始值(即产生的第一个值),默认为1。

  • MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。

  • MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。

  • CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。

  • CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。
    大量语句发生请求,申请序列时,为了避免序列在运用层实现序列而引起的性能瓶颈。Oracle序列允许将序列提前生成 cache x个先存入内存,在发生大量申请序列语句时,可直接到运行最快的内存中去得到序列。但cache个数也不能设置太大,因为在数据库重启时,会清空内存信息,预存在内存中的序列会丢失,当数据库再次启动后,序列从上次内存中最大的序列号+1 开始存入cache x个。这种情况也能会在数据库关闭时也会导致序号不连续。

  • NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用。

  • CURRVAL 中存放序列的当前值,NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效。

  1. 使用序列
select 序列名称.NEXTVAL from dual;  --获取序列的下一个值
select 序列名称.CURRVAL from dual;  --获取序列的当前值

insert into 表名(toyid, toyname, toyprice)VALUES (序列名称.NEXTVAL, 'fTWENTY', 25);   --获取序列的下一个值,插入表中
  1. 更改和删除序列
--使用ALTER SEQUENCE语句修改序列的步长为3
alter sequence 序列名称 increment by 3;

--使用DROP SEQUENCE语句删除序列
DROP SEQUENCE 序列名称;

三、视图

  1. 视图简介
    a、视图以经过定制的方式显示来自一个或多个表的数据;
    b、视图可以视为"虚拟表” 或“存储的查询”;
    c、创建视图所依据的表称为“基表”;
    d、视图的优点有:
    提供了另外一种级别的表安全性;
    隐藏的数据的复杂性;
    简化的用户的SQL命令;
    隔离基表结构的改变;
    通过重命名列,从另一个角度提供数据。

  2. 创建视图

create or replace view 视图名称(列名······) as 查询语句 [with check option] [with read only]
  • 使用WITH CHECK OPTION选项创建视图,相当于添加了约束,当通过视图对底层表进行的insert,update操作必须保证操作结果也在视图中,不允许操作后使视图中的数据减少;
  • 使用 with read only 创建只读视图
  1. 创建外连接视图
    在这里插入图片描述

四、索引

  1. 索引介绍
    a、表在物理空间是线性存储的;
    b、如果没有索引的数据查找,就是最原始的顺序搜索。
    c、索引的好处:

    与表关联的可选结构;
    加快SQL语句的执行;
    减少磁盘I/O;
    CREATE INDEX语句用于创建索引;
    Oracle自动维护索引
    

    d、索引的分类:–非聚集索引 --聚集索引

  2. 创建标准索引,重建索引,删除索引

--创建标准索引
SQL> CREATE INDEX item_index ON itemfile (itemcode) TABLESPACE index tbs;

--重建索引
SQL> ALTER INDEX item index REBUILD;

--删除索引
SQL> DROP INDEX item_index;
  1. 唯一索引
SQL> CREATE UNIQUE INDEX item index ON itemfile (itemcode);
  1. 组合索引
SQL> CREATE INDEX comp_index ON itemfile(p_category, itemrate);
  1. 反向索引
SQL> CREATE INDEX rev_index ON itemfile (itemcode) REVERSE; --创建反向索引

SQL> ALTER INDEX rev_index REBUID NOREVERSE;  -- 修改反向索引
  1. 位图索引
SQL> CREATE BITMAP INDEX bit index ON order_master (orderno);
  1. 基于函数索引
    注意:

     创建时必须具有QUERY REWRITE权限;
     表达式中不能出现聚合函数;
     不能在LOB类型的列,上创建。
    
SQL> CREATE INDEX lowercase_idx ON toys (lower(toyname)); --创建带函数的索引
SQL> select * from toys order by toyname;
  1. 索引组织表

     索引组织表的数据存储在与其关联的索引中;
     索引组织表的数据存储在与其关联的索引中;
     基于主键访问数据;
     CREATE TABLE命令与ORGANIZATION INDEX子句- -起用于创建索引组织表。
    
SQL> CREATE TABLE ind_org_tab(
vencode NUMBER(4) PRIMARY KEY,
venname VARCHAR2(20)
)
organization index;
  1. 分区表的索引
    分区表往往存储有大量的数据,并且分区表的各个区往往存储在不同的地方,这样建立普通索引要花费大量的的存储空间,因此针对分区表的索引有两种处理方式:

     全局索引:将所有分区表的数据视为一个整体,对整个建立索引;
     本地索引:为每个子分区建立各自独立的索引。
    
create index索引名on表名(索引列) global--全局索引
create index索引名on表名(索引列) local--本地索引
  1. 索引分区
    在这里插入图片描述
  2. 获取索引信息
    与索引有关的数据字典视图有:
    USER IND PARTITIONS -用户创建的分区索引的信息;
    USER_ IND COLUMNS -与索引相关的表;
SQL> SELECT 索引名称, 表名, 列名 FROM USER_IND_COLUMNS ORDER BY INDEX_NAME, COLUMN_POSITION;
发布了36 篇原创文章 · 获赞 7 · 访问量 2062

猜你喜欢

转载自blog.csdn.net/q_2540638774/article/details/103851370