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

 更新时间:2022年07月19日 10:59:10   作者:缥缈的尘埃  
这篇文章主要介绍了Oracle学习笔记之视图及索引的使用,视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询

一、视图的使用

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 视图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于expdp任务异常的处理案例详析

    关于expdp任务异常的处理案例详析

    这篇文章主要给大家介绍了关于expdp任务异常处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Oracle 函数大全

    Oracle 函数大全

    小编为大家整理了 Oracle 常用的函数,大家可以参考一下,希望对大家有所帮助。
    2016-05-05
  • EF 配置Oracle数据库的具体操作方法

    EF 配置Oracle数据库的具体操作方法

    下面小编就为大家带来一篇EF 配置Oracle数据库的具体操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Oracle数据库中的游标cursor使用详解

    Oracle数据库中的游标cursor使用详解

    这篇文章主要给大家介绍了关于Oracle数据库中的游标使用的相关资料,游标提供了一种从表中检索数据并进行操作的灵活手段,游标主要用在服务器上,处理由客户端发送给服务器端的SQL语句,或是批处理、存储过程、触发器中的数据处理请求,需要的朋友可以参考下
    2023-10-10
  • oracle if else语句使用介绍

    oracle if else语句使用介绍

    Oracle if else 语句的写法及应用介绍,详细可参考本文
    2012-11-11
  • Oracle date如何比较大小分析

    Oracle date如何比较大小分析

    本文将详细介绍Oracle date如何比较大小,需要了解更多的朋友可以参考下
    2012-11-11
  • oracle数据库排序后如何获取第一条数据

    oracle数据库排序后如何获取第一条数据

    这篇文章主要介绍了oracle数据库排序后如何获取第一条数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Oracle19c 创建表空间遇到的坑

    Oracle19c 创建表空间遇到的坑

    昨天部署好oracle19c后,用以前oracle11g的笔记来创建表空间遇到了坑,今天特此把解决过程分享到脚本之家平台,感兴趣的朋友一起看看吧
    2021-10-10
  • Oracle 9i轻松取得建表和索引的DDL语句

    Oracle 9i轻松取得建表和索引的DDL语句

    Oracle 9i轻松取得建表和索引的DDL语句...
    2007-03-03
  • ORACLE 10G修改字符编码没有超字符集的限制

    ORACLE 10G修改字符编码没有超字符集的限制

    ORACLE 10G修改字符编码没有超字符集的限制,可以直接修改成自己想要字符串,之前已经存在数据就需要重新再导入
    2014-08-08

最新评论