Oracle数据库之视图与索引

1. 视图简介

视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。

视图基于的表称为基表,视图是存储在数据字典里的一条SELECT语句。通过创建视图可以提取数据的逻辑上的集合或组合。

我们可以像使用表一样使用视图,但需要注意的是:查询视图没有什么限制,插入/更新/删除视图的操作会受到一定的限制;所有针对视图的操作都会影响到视图的基表;为了防止用户通过视图间接修改基表的数据,可以将视图创建为只读视图(带上with read only选项)。

2. 创建视图

语法:

CREATE [OR REPLACE]
[[NO] FORCE] [EDITIONING] VIEW [schema.] view_name
[ ( { alias [ inline_constraint... ]
| out_of_line_constraint
}
[, { alias [ inline_constraint...]
| out_of_line_constraint
}
]
)
| object_view_clause
| XMLType_view_clause
]
AS subquery [ subquery_restriction_clause ] ;

说明:

FORCE:”强制”创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限。

alias:视图的列别名,别名的个数必须与SELECT查询中列的个数相同,如果SELECT查询包含函数或表达式,则必须为其定义列别名。

subquery:查询语句。

subquery_restriction_clause:查询语句限制:

WITH { READ ONLY
| CHECK OPTION
} [ CONSTRAINT constraint ]

READ ONLY:创建的视图只能用于查询数据,而不能用于更改数据。

CHECK OPTION:指定对视图执行的dml操作必须满足“视图子查询”的条件,即对通过视图进行的增删改操作进行“检查”,要求增删改操作的数据,必须是SELECT查询所能查询到的数据,否则不允许操作并返回错误提示。

完整的语法结构及说明见:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_8004.htm#SQLRF01504

示例:

CREATE OR REPLACE VIEW  vw_dept (name,minsal,maxsal,avgsal)
AS
SELECT d.dname,min(e.salary),max(e.salary),avg(e.salary)
FROM employee e, dept d
WHERE e.did=d.id
GROUP BY d.dname
WITH READ ONLY;

3. 视图的优点

  1. 简化对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
  2. 用户通过简单的查询可以从复杂查询中得到结果。
  3. 维护数据的独立性,视图可从多个表中检索数据。
  4. 对于相同的数据可产生不同的视图。
  5. 提供各种数据表现形式,可以使用各种不同的方式将基表的数据展现在用户面前,以便符合用户的使用习惯。
  6. 提供安全性保证,视图提供了一种可以控制的方式,即可以让不同的用户看见不同的列,而不允许访问那些敏感的列,这样就可以保证敏感数据不被用户看见。
  7. 简化用户权限的管理,可以将视图的权限授予用户,而不必将基表中某些列的权限授予用户,这样就简化了用户权限的定义。

4. 索引

为了提高查询的速度,当用户对查询速度不满意而需要对数据库的性能进行调校时,优先考虑建立索引。

创建索引语法:

CREATE [UNIQUE] INDEX index_name
ON table(column1 [ASC | DESC] [, column2 [ASC | DESC] ]... ...)

示例:

CREATE INDEX idx_ename ON employee (ename, sal DESC);

适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引。

向表中“添加”行或从表中“删除”行时,必须花费额外的时间来更新该表的索引,所以当需要从大表中检索少数几行时创建索引。一般我们认为当任何单个查询要检索的行小于整个表总行数的10%时,索引就非常有用。

表的主键和唯一键将自动创建索引。

Oracle数据库之视图与索引的更多相关文章

  1. Oracle总结【视图、索引、事务、用户权限、批量操作】

    前言 在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了...那么本篇主要总结关于Oralce视图.序列.事务的一些内容... 在数据库中,我们可以把各种的SQL语句分为四大类 ...

  2. SQL数据库—<5>视图、索引…简单学习

    视图 掌握:1.视图是个什么东西?2.会建视图,会查视图3.知道视图的主要功能是查询,不是增删除改. 视图的定义: 视图可以认为是从一个数据表或者多个数据表中导出的表,视图本身没有任何数据,它是用来存 ...

  3. ORACLE数据库之PL/SQL触发器、rownum、动态SQL、数据库之视图与索引

    WHEN子句说明触发约束条件.Condition为一个逻辑表达时,其中必须包含相关名称,而不能包含查询语句,也不能调用PL/SQL函数.WHEN子句指定的触发约束条件只能用在BEFORE和AFTER行 ...

  4. Oracle数据库,序列、索引、视图

    一.序列:生成自动增长(或减少)的整数值 Sequences中新建 调取: th_test.nextval 获取下一个值 th_test. currval获取当前值 二.视图:在物理表的基础上定义的虚 ...

  5. Oracle数据库的视图

    使用视图的优点:    1.简化数据操作:视图可以简化用户处理数据的方式.    2.着重于特定数据:不必要的数据或敏感数据可以不出现在视图中.    3.视图提供了一个简单而有效的安全机制,可以定制 ...

  6. Oracle数据库学习 视图、序列及存储过程

    视图(View) 视图也被称作虚表,也就是虚拟的表,是一组数据的逻辑表示. 视图对应一个select语句,结果集被赋予一个名字,也就是视图的名字. 视图本身不包含任何数据,它只是包含映射到基表的一个查 ...

  7. oracle 序列、视图、索引

    序列 创建 在sequences里 作用 生成自动增长(或减少)的整数值 经常添加数据时使用,可控性好 写法:序列名.nextval  获取下一个序列值 序列名.currval  获取当前序列值,不常 ...

  8. Oracle数据库报错:索引中丢失 IN 或 OUT 参数

    另外,我记得好像以前也有这样的错误发生,当时的错误原因是,参数类型和数据库的类型不匹配引起的. 所以,如果有这种错误发生,应该仔细检查每个字段赋值的地方,检查类型及非空. 也可能是传参数问题,传参数过 ...

  9. ORACLE数据库编程

    第一章 Oracle数据库基本概念 一.介绍 Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为 核心的一组软件产品,是目前最流行的客户/服务器(Client/Server, ...

随机推荐

  1. HTML5 Canvas JavaScript库 Fabric.js 使用经验

    首先,表明我的态度:采用 Flash 才是最优方案,不建议使用 HTML 5 的 Canvas 做一些生产/工业级的网页应用. Flash的优势一是浏览器支持好,二是代码成熟稳定.而HTML5 的 C ...

  2. bzoj 1096 [ZJOI2007]仓库建设(关于斜率优化问题的总结)

    1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3234  Solved: 1388[Submit][Stat ...

  3. linux上安装rar解压软件

    描述:Linux默认自带ZIP压缩,最大支持4GB压缩,RAR的压缩比大于4GB. -------------------------------------------------- 下载 # wg ...

  4. Linux开启相关端口及查看已开启端口

    防火墙层面:   /sbin/iptables -I INPUT -p tcp --dport 8011 -j ACCEPT #开启8011端口  /etc/rc.d/init.d/iptables ...

  5. 跨服务器备注SQL数据库 分类: SQL Server 2015-03-05 08:52 227人阅读 评论(0) 收藏

    任务:把服务器1上的SQL数据库自动备份到服务器2上,命名格式=数据库名+年月日+小时. 说明: 服务器2=>192.168.0.22 数据库名=>Book 共享文件夹路径:192.168 ...

  6. 【设计模式 - 10】之外观模式(Facade)

    1      模式简介 外观模式隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口.外观模式往往涉及到一个类,这个类提供了客户端请求的简化方法和对现有系统类方法的委托调用.外观模式使得系统中的 ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤 系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行 ...

  8. shell 验证ip

    #!/bin/bash function isIp(){ IP=$ ];then echo "Wrong IP!" exit else a=`echo $IP | awk -F . ...

  9. [RxJS] Transformation operator: buffer, bufferCount, bufferTime

    This lesson will teach you about another horizontal combination operator: buffer and its variants. B ...

  10. android 39 共享首选项

    共享首选项SharedPreferences:用于存储少量数据,大量数据则存入文件或者sd卡.以键值对保存数据. activity.java package com.sxt.day06_05; imp ...