您的位置:首页技术文章
文章详情页

Oracle学习笔记之视图及索引的使用

【字号: 日期:2023-03-12 15:25:22浏览:92作者:猪猪
目录
  • 一、视图的使用
    • 1.概念
    • 2.视图分类
    • 3.视图语法
    • 4.视图实例
  •  二、索引
    • 1.索引概念
    • 2.索引分类
      • 2.1、按物理存储方式分类
      • 2.2、按逻辑功能分类
    • 3.索引原则
      • 4.索引语法

      一、视图的使用

      1.概念

      视图概念: 视图是基于一个表或多个表或视图的逻辑表(虚表),本身不包含数据,通过它可以对表里面的数据进行查询。

      基表:视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。

      视图优点:

      • 简化性
      • 安全性

      2.视图分类

      视图分为简单视图和复杂视图。两者区别如下:

      • 简单视图只从单表获取数据,复杂视图从多表获取数据。
      • 简单视图不包含函数和数据组,复杂视图包含。
      • 简单视图可以实现DML操作,复杂视图不可以。

      3.视图语法

      创建视图的语法:

      • CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[,alias]...)]
      • AS subquery [WITH CHECK OPTION] [WITH READ ONLY]

      参数解析:

      • OR REPLACE:如果视图存在,新定义将替换视图。
      • FORCE:基本不存在也将创建视图,NOFORCE相反。
      •  ALIAS:为视图产生的列定义别名,如不定义将采用基表中列名。
      • SUBQUERY:一条查询语句。
      • WITH CHECK OPTION:插入或者修改数据必须满足视图查询(SUBQUERY)WHERE子句的条件。
      • WITH READ ONLY:不能对视图进行删改(DELETE/UPDATE)操作。

      4.视图实例

      create or replace view emp_view
      as select * from emp where empno<1003;

       二、索引

      1.索引概念

      • 在关系数据库中,索引是一种与表有关的数据库对象,它可以使对应于表的SQL查询语句执行得更快。
      • 索引的作用类似于图书的目录,可以根据目录中的页码快速找到所需的内容。
      • 对于数据库来说,索引是一个必选项,对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分。

      2.索引分类

      2.1、按物理存储方式分类

      B*树索引:B*树索引的存储结构类似书的索引结构,有分支和叶两种类型的存储数据块。分支块相当于书的大目录,叶块相当于索引到具体的书页。

      位图索引:位图索引的存储主要用来节省空间,减少Oracle对数据块的访问,它采用位图偏移方式来与表的行ID对应,采购位图索引一般是重复值太多的表字段。

      2.2、按逻辑功能分类

      唯一索引:唯一索引意味着不会有两行记录相同的索引键值。

      非唯一索引:非唯一索引即不对索引列的值进行唯一性限制。

      3.索引原则

      在正确使用索引的前提下,索引可以提高检索相应表的速度。

      • 下列情况可以创建索引
      • 字段取值分布范围很广
      • 字段中包含大量空值
      • 字段经常出现在where子句或连接条件中
      • 表经常被访问、数据量很大,且通常每次访问的数据量小于记录总数的2%-4%。

      下列情况不适合创建索引:

      • 表很小
      • 字段不经常出现在where子句中
      • 每次访问的数据量大于记录总数的2%-4%
      • 表经常更新
      • 被索引的字段作为表达式的一部分被引用

      4.索引语法

      索引创建的语法:

      •  create [unique|bitmap] index 索引名称
      • on 表名(列名1[desc|asc],……)

      创建索引:

      create index ix_emp_ename on emp(ename);

      删除索引:

      drop index ix_emp_ename;

      到此这篇关于Oracle学习笔记之视图及索引的使用的文章就介绍到这了,更多相关Oracle 视图内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

      标签: Oracle