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

目录
  • 一、视图的使用
    • 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 视图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • oracle使用索引与不使用索引的性能详析

    前言 Oracle存储索引的数据结构是B*树.位图索引也是如此,仅仅只是是叶子节点不同B*数索引: 索引由根节点.分支节点和叶子节点组成.上级索引块包括下级索引块的索引数据,叶节点包括索引数据和确定行实际位置的rowid. 使用索引的目的: 加快查询速度 降低I/O操作 消除磁盘排序 何时使用索引: 查询返回的记录数 排序表<40% 非排序表 <7% 表的碎片较多(频繁添加.删除) 索引的种类 非唯一索引(最经常使用) 唯一索引 位图索引 局部有前缀分区索引 局部无前缀分区索引 全局有前缀分区

  • Oracle Index索引无效的原因与解决方法

    索引无效原因 最近遇到一个Oracle SQL语句的性能问题,修改功能之前的运行时间平均为0.3s,可是添加新功能后,时间达到了4~5s.虽然几张表的数据量都比较大(都在百万级以上),但是也都有正确创建索引,不知道到底慢在了哪里,下面展开调查. 经过几次排除,把问题范围缩小在索引上,首先在确定索引本身没有问题的前提下,考虑索引有没有被使用到,那么新的问题来了,怎么知道指定索引是否被启用. 判断索引是否被执行 1. 分析索引 即将索引至于监控状态下,对索引进行分析.如下对 ID_TT_SHOHOU

  • oracle 视图权限 oracle 创建视图权限不足

    问题描述:在scott用户下创建视图的时候,报错:权限不足. (其他用户以此类推) 解决方法: 以dba用户登录 [sql] 复制代码 代码如下: sqlplus / as sysdba 赋予scott用户创建VIEW的权限 [sql] 复制代码 代码如下: grant create view to scott 以scott用户登录oracle [sql] 复制代码 代码如下: conn scott/tiger 创建视图成功 [sql] 复制代码 代码如下: CREATE OR REPLACE

  • ORACLE检查找出损坏索引(Corrupt Indexes)的方法详解

    索引 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是一个独立于表的对象,可以存放在与表不同的表空间中.索引记录中存有索引关键字和指向表中数据的指针(地址).对索引进行的I/O操作比对表进行操作要少很多.索引一旦被建立就将被Oracle系统自动维护,查询语句中不用指定使用哪个索引. 从物理上说,索引通常可以分为:分区和非分区索引.常规B树索引.位图(bitmap)索引.翻

  • Oracle Scott创建视图权限不足解决办法

    在PL/SQL Developer数据库管理工具中,使用SCOTT用户帐号进行登录,新建SQL查询窗口,输入一条创建视图的SQL语句,随后弹出一个错误的提示信息:ORA-01031:权限不足. 上图所示的错误提示信息已经说的很明白了,这是权限不足导致的!所以,只要我们设置一个scott用户的权限就可以解决了! 在网上查了一下,设置用户权限是使用 grant,而创建视图权限是 create view,那么,要给scott用户赋予创建视图权限的语句就是下面整条语句了: grant create vi

  • Oracle中的索引讲解

    一.B-树索引 索引一般是B-Tree索引,在索引结构中存储着键值和键值的RowID,并且是一一对应的. create [unique] index studentin student(id [desc]); 选项择索引字段的原则: (ORACLE在UNIQUE和主键字段上自动建立索引 .) 在WHERE子句中最频繁使用的字段 . 联接语句中的连接字段. 选择高选择性的字段(即如果很少的字段拥有相同值,即有很多独特值,可以快速查找到所需数据的字段) . 在联机事务处理(OLTP)环境下,所由并发

  • oracle中的视图详解

    1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表.视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器.(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束) 2.视图的存储 与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据.视图只是定义了一个查询,视图中的数据是从基表中获取

  • Oracle数据库scott用户创建view视图权限的操作方法

    1.首先打开SQL Plus窗口,然后窗口会提示你请输入用户名,如图所示 2.注意:在输入口令的时候as后面要加个空格即:as+空格+sysdba 用户名:sqlplus 口令:as sysdba 3.接下来就是给scott赋予view权限设置,命令如下: grant create view to scott; 4.另外还有一种就是在给scott赋予view权限的同时创建表格(table),命令如下: grant create table,create view to scott; 5.完成了以

  • Oracle数据库中建立索引的基本方法讲解

    怎样建立最佳索引? 1.明确地创建索引 create index index_name on table_name(field_name) tablespace tablespace_name pctfree 5 initrans 2 maxtrans 255 storage ( minextents 1 maxextents 16382 pctincrease 0 ); 2.创建基于函数的索引 常用与UPPER.LOWER.TO_CHAR(date)等函数分类上,例: create index

  • Oracle创建带有参数的视图代码介绍

    在Oracle里,视图不像存储过程和函数一样,可以定义输入参数,但我们可以变个方式,使用程序包来实现 首先定义程序包: /* 按个人需要定义,我定义三个参数 ,因我项目程序需要,所以三个参数都是number ,当然可定义其它类型 但切记,第二个create 的参数类型等需以第一个create一致,否则程序包创建失败 */ create or replace package p_view_param is --参数一 function set_param(num number) return nu

随机推荐