Oracle数据库对象----序列、索引、视图、同义词

Oracle数据库对象—序列、索引、视图、同义词

1.序列

  • 什么是序列?

    序列是Oracle里面的对象,用来生成一个连续有规律的数值,常用来设置主键的值

  • 创建序列的基本语法:

CREATE SEQUENCE sequence_name    --sequence_name序列的名字
[START WITH start_num]    --start_num数值,表示序列起始值
[INCREMENT BY increment_num]   --increment_num序列的增长值
[ { MAXVALUE maximum_num | NOMAXVALUE } ]    --设置序列的最大值,
[ { MINVALUE minimum_num | NOMINVALUE } ]   --设置序列的最小值
[ { CYCLE | NOCYCLE } ]  --序列达到最大值之后是否重新生成
[ { CACHE cache_num | NOCACHE } ]  --是否缓存序列
[ { ORDER | NOORDER } ];  --序列是否是有序的

/**其中带中括号的都是可选内容,一般采用默认值就可以**/
  • 创建序列:
--创建一个简单的序列
CREATE SEQUENCE seq1 ;   /**创建一个名为seq1的序列**/

--创建序列,指定参数
CREATE SEQUENCE seq1 START WITH 1 INCREMENT BY 2 ;  /**序列名为seq1,起始值为1,递增量为2**/
  • 序列的使用:
--序列名.nextval  获取序列的下一个值

SELECT seq1.nextval FROM dual; 

--序列名.currval  获取序列当前的值(必须要初始化序列,也就是必须要执行过序列的nextval属性)

SELECT seq1.currval FROM dual;

--查看序列  
SELECT * FROM user_sequences WHERE sequence_name=upper('seq1') 
/**upper是Oracle数据库中转大写的函数,因为Oracle数据库中字段名和表名都以大写形式存储,所以需要转大写后比较**/

--序列的修改  
ALTER SEQUENCE seq1 INCREMENT BY 1

--使用序列填充主键
INSERT INTO seqtab(id,name) VALUES(seq1.nextval,'aaa')

--删除序列
DROP SEQUENCE seq1;

2.索引

  • 什么是索引?

索引是与表相关联的可选对象,类似于字典里的目录,使用索引主要是为了提高查询的效率

  • 如何使用索引?

虽然索引可以提高查询效率,但并不是什么情况下都适合创建索引的。
使用索引:1、经常需要搜索的列 2、主键列 3、连接查询的条件列 4、排序的列 5、where条件的列
不使用索引:1、查询中很少使用的列 2、很少值 3、blob数据 4、修改性能>查询性能
索引的优点 :提高查询的效率
索引的缺点 :1、降低增删改的效率(因为每次增删改数据时都需要维护索引,就像字典中增删改字的时候就需要更新目录一样)
2、增加存储的物理空间(索引也是需要一定空间来存储的)
注意:索引不一定能提高查询效率,某些情况下创建索引可能还会降低查询效率,比如当一个表的数据很少的时候,使用索引的话要先去索引中查询,然后去表中查询,这可能会比直接查询还要慢,所以要根据实际情况决定是否需要创建索引。

  • 索引的使用:
--创建B-Tree索引(适合数据重复度低的字段)语法:
CREATE [UNIQUE] [BITMAP] INDEX index_name ON
table_name(column_name[, column_name ...])

--创建索引
create index id_indextab_id on indextab(id);

--创建唯一索引(列的值必须是唯一的)
--创建主键的时候,会自动的增加唯一索引
create unique index id_index_temp_name on index_temp(name);

--创建函数索引
--查询的时候重复使用某个函数进行查询,可以创建针对于该函数的一个函数索引
create index id_indextab_name on indextab(lower(name));

--查看索引信息
select * from user_indexes where table_name=upper('indextab');  /**查看整个表的索引信息**/
select * from user_ind_columns  where table_name=upper('indextab');  /**查看具体列的索引信息**/

--删除索引
drop index id_indextab_name;

--创建位图索引[BITMAP ](列的基数很少,重复值很多,数据不会被经常更新)
create bitmap index in_stu_sex on stu(sex);

3.视图

  • 什么是视图?

视图是基于已知的一张或多张表的查询结果,等于表查询,不存在真实的数据,数据来源于数据库中实际的表;使用视图其实是为了简化查询语句,将复杂的查询封装成一个视图,然后查询的时候直接使用视图作为查询的对象就可以。
视图一般是用来查询的,虽然增删改也可以用视图,但不建议这么做,这里也不演示视图的增删改。

  • 创建视图的语法:
CREATE [OR REPLACE] [{FORCE | NOFORCE}] VIEW view_name    
[(alias_name[, alias_name ...])] AS subquery
[WITH {CHECK OPTION | READ ONLY} CONSTRAINT constraint_name];
--------OR REPLACE 覆盖已经存在的视图      
--------{FORCE | NOFORCE}视图查询的表如果不存在,是否强制创建视图
--------view_name  视图的名字
--------subquery  一个查询语句
--------WITH {CHECK OPTION | READ ONLY} CONSTRAINT constraint_name 是的约束
  • 视图的使用:
--创建一个简单的视图
create or replace view v_stu as select id,name from stu ;

--创建有条件的视图
create or replace view v_stu as select * from stu a left join class b on a.classid = b.id ;  
/**这里创建的视图其实就是一个联表查询的结果,这种视图是经常使用的**/

--使用视图 
select * from v_stu ;
/**查询结果等同于 select * from stu a left join class b on a.classid = b.id ; **/
/**可以看出,创建视图后,对于复杂查询时的操作就比较简单了,只是简化了查询语句,但并不会提高查询效率**/


--查看视图定义
select * from 视图名字;

--删除视图
drop view 视图名字;

4.同义词

  • 什么是同义词?

    同义词就是给表、视图取的别名

  • 创建同义词的语法

CREATE  SYNONYM 别名 for  原名称(表/视图)
  • 同义词的使用
--创建一个同义词
create synonym stu for student; /**给student 取了一个stu的新的名字**/
--使用同义词
select * from stu; --  /**等同于select * from stu**/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值