数据库类型(视图,索引,同义词)

视图
什么是视图:
视图就是封装了一条复杂查询的语句
视图是一个虚表
最大的有点就是简化复杂的查询。
创建视图的语法
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[,alias…])]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
视图不能够修改,只能增加,删除,查询
创建视图示例

	范例:建立一个视图,此视图包括了20个部门的全部员工信息
	create view empvd20 as select * from emp t where t.deptno = 20;
	视图创建完毕就可以使用视图查询,查询出来的都是20部门的员工
	
不建议通过视图对表中的数据进行修改

视图中的DML的规定
	可以在简单视图中执行DML操作
	当视图定义中包含一下元素之一时不能使用delete
		组函数
		GROUP BY 子句
		DISTINCT 关键字
		ROWNUM 伪列
	当视图定义中包含一下元素之一时不能使用update
		组函数
		GROUP BY 子句
		DISTINCT 关键字
		ROWNUM 伪列
		列的定义为表达式
	当视图定义中包含一下元素之一时不能使用insert
		组函数
		GROUP BY 子句
		DISTINCT 关键字
		ROWNUM 伪列
		列的定义为表达式
		表中非空的列在视图定义中未包括
		
综上所述:屏蔽DML操作
	可以使用WITH READ ONLY选项屏蔽对视图的DML操作
	任何DML操作都会放回一个Oracle server错误
	
删除视图
	删除视图只是删除视图的定义,并不会删除基表的数据。
	DROP VIEW view;
	
	DROP VIEW empvu80;
	View dropped.

序列
序列:在很多数据库中都存在一个自动增长的列,如果现在想要在Oracle中完成自动增长的功能,则只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理。并且Oracle将序列值装入内存可以提高访问效率。
序列:可供多个用户用来生产唯一数值数据库对象
自动提供位移的数值
共享对象
主要用于提供主键值
将序列值装入内存可以提高访问效率
序列—>数组—>内存
[1,2,3…,20][21,22,23,…40]

定义序列:
	CREATE SEQUENCE sequence
			[INCREMENT BY n]				步长默认1
			[START WITH n]					数组的第一个值,默认1
			[{MAXVALUE n | NOMAXVALUE}]		最大,没有最大
			[{MINVALUE n | NOMINVALUE}]		最小,没有最小
			[{CYCLE | NOCYCLE}]				循环
			[{CACHE n | NOCACHE}];			数组长度
			
序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中提供了以下两种操作:
	nextval :取得序列的下一个内容
	currval :取得序列的当前内容
	
序列可能产生裂缝的原因:
回滚
系统异常
多个表共用一个序列

索引
索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低io次数,而提高数据访问性能。
1.单列索引
单列索引是基于单个列所建立的索引,比如:
CRETE index 索引名 on 表名(列表)
2.复合索引
复合索引是基于两个列或多个列的索引。在同一张表上可以有多个索引,但要求列的组合必须不同,比如:
Create index emp_idx1 on emp(ename,job);
Create index emp_idx1 on emp(job,ename);

什么时候创建索引
以下情况可以创建索引:
列中数据值分布范围很广
列经常在where子句中或连接条件中出现
表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%

在这里插入图片描述
同义词(别名)
CREATE [PUBLIC] SYNONYM synonym
FOR object;

例如:
create public sysnonym emp for scott.emp;
select * from emp;
drop public synonym emp;


使用同义词的作用
1.可以很方便的访问其它的数据库对象
2.缩短了对象名字的长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值