一.数据库开发
1.Oracle数据库,视图与表的区别?
表是作为oracle数据库存储数据的一种数据结构,视图是从已存在表上抽出逻辑相关的数据集合,其本身和表的区别不大,都是对数据一种存储,只不过我们可以在已有表的基础上抽取一部分我们想要的数据,视图是已经编译好的sql语句。
表有实际的物理记录,视图没有,表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改,表是内模式,视图是外模式,视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构,视图的建立和删除只影响视图本身,不影响对应的基本表。
2.普通视图与物化视图的区别?
普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。
普通视图和物化视图是两个概念,说区别是放在一起让大家更好的理解,
基本概念,普通视图是不存储任何数据的,是在查询中转换为对应的定义SQL去查询,
物化视图是将数据转换为一个表,实际存储着数据,这样查询数据,就不用关联一大堆表,如果表很大的话,会在临时表空间内做大量的操作。
3.Oracle数据库,有哪几类索引,分别有什么特点?
(1)b-tree索引
Oracle数据库bai中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。
(2)位图索引(bitmap index)
位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。
(3)基于函数的索引
比如经常对某个字段做查询的时候是带函数操作的,那么此时建一个函数索引就有价值了。
(4)分区索引和全局索引
这2个是用于分区表的时候。前者是分区内索引,后者是全表索引
(5)反向索引(REVERSE)
这个索引不常见,但是特定情况特别有效,比如一个varchar(5)位字段(员工编号)含值(10001,10002,10033,10005,10016..)这种情况默认索引分布过于密集,不能利用好服务器的并行,但是反向之后10001,20001,33001,50001,61001就有了一个很好的分布,能高效的利用好并行运算。
(6)HASH索引
HASH索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建HASH集群之前就要知道。需要在创建HASH集群的时候指定这个值。使用HASH索引必须要使用HASH集群。
4.Union与Union All的区别?
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
5.对游标的理解?游标的分类?使用方法?
(1)概念:
可以把游标当作一个指针,它可以指