Oracle --- 视图 索引 语法结构

news2024/12/24 22:16:09

目录

视图

概念

优点

创建视图

查看视图

​修改视图

删除视图

索引

概念

 分类

普通索引

唯一索引

复合索引

反向键索引

位图索引

存储函数

概念

语法结构


视图

概念

视图 是一种数据库对象,是从 一个或者多个 数据表或视图中导出的 虚表。
视图所对应的数据, 并不是真正的存储在 视图 中,而是 存储在所引用的数据表 中。
视图的结构和数据,是对数据表进行查询的结果。

优点

  1. 简化数据操作:视图可以简化用户处理数据的方式。
  2. 着重于特定数据:不必要的数据 或 敏感数据,可以不出现在视图中。
  3. 视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限。
  4. 提供向后兼容性:视图使用户能够在表的架构更改时,为表创建向后兼容接口。
  5. 集中分散数据。
  6. 简化查询语句。
  7. 重用SQL语句。
  8. 保护数据安全。
  9. 共享所需数据。
  10. 更改数据格式。

创建视图

CREATE [OR REPLACE] [FORCE] VIEW '视图名'
AS '子查询'
[WITH [CASCADED|LOCAL] CHECK OPTION]
-- 只读。
[WITH READ ONLY]

示例代码

create or replace view dept_emp_view as
select SCOTT.EMP.ENAME, SCOTT.EMP.SAL, SCOTT.DEPT.DEPTNO, SCOTT.DEPT.DNAME, SCOTT.DEPT.LOC
from scott.DEPT
         right join SCOTT.EMP on DEPT.DEPTNO = EMP.DEPTNO;

 字段说明

字段说明

OR REPLACE 

若所创建的试图已经存在,Oracle 自动重建该视图

FORCE

不管基表是否存在,Oracle 都会自动创建该视图

sub_query 

一条完整的 SELECT 语句,可以在该语句中定义别名

WITH CHECK OPTION 

数据表 插入或修改 的数据行,必须满足视图定义的约束

WITH READ ONLY 

该视图上不能进行任何 DML 操作

查看视图

SELECT * FROM  '视图名';

代码

select * from dept_emp_view;

结果

修改视图

ALTER VIEW '视图名' [('列名1' ..., '列名n')]
AS 'select_statement'
[WITH [CASCADED|LOCAL] CHECK OPTION]

删除视图

DROP VIEW [IF EXISTS] '视图名'[,'视图名2'] ... [RESTRICT|CASCADE];
-- RESTRICT:限制。
-- CASCADE:级联。

索引

概念

索引是用于加速数据存取的 数据对象。
合理的使用索引可以大大降低 I/O 次数,从而提高数据访问性能。
索引是需要占据存储空间的,也可以理解为是一种特殊的数据。
形式类似于下图的一棵树,而树的节点存储的就是每条记录的物理地址,也就是提到的 ROWID(伪列)

 分类

普通索引

create index '索引名称' on '表名'('列名');

代码

create index only_name on demo (name);

 

唯一索引

需要在某个表某个列创建索引,而这列的值是 不会重复的。
可以创建 唯一索引。

create unique index '索引名称' on '表名'('列名');

代码

create unique index only_name on demo (name);

复合索引

经常需要对某几列进行查询。
比如,经常要根据 学历 和 性别 对学员进行搜索。
如果对这两列建立两个索引,因为需要查两棵树,查询性能不一定高。
建立复合索引,也就是基于两个以上的列建立一个索引 。

create index '索引名称' on '表名'('列名1', '列名2', ...);

代码

create  index only_name on demo (id, name) ;

 

反向键索引

应用场景:当某个字段的值为 连续增长的值,如果构建标准索引,会形成歪脖子树。
这样会增加查询的层数,性能会下降。
建立反向键索引,可以使索引的值变得不规则,从而使索引树能够均匀分布。

create index '索引名称' on '表名'('列名') reverse;

代码

create index only_name on demo (name) reverse ;

 

位图索引

使用场景:位图索引适合创建在 低基数列上。
位图索引不直接存储 ROWID,而是存储字节位到 ROWID 的映射。
优点:减少响应时间,节省空间占用。

create bitmap index '索引名称' on '表名'('列名');

代码

create bitmap index only_name on demo (name);

 

存储函数

概念

存储函数 又称为 自定义函数。
可以接收 一个或多个 参数,返回一个结果。
在函数中可以使用 PL/SQL 进行逻辑的处理。

语法结构

创建 或 修改存储过程。
CREATE [ OR REPLACE ] FUNCTION '函数名称'('参数名称1' '参数类型1', '参数名称2' '参数类型2', ...)
RETURN '结果变量数据类型'
AS
 '变量声明部分';
BEGIN
 '逻辑部分';
    RETURN '结果变量';
[EXCEPTION '异常处理部分']
END;

示例代码

oracle自带的表,查询每个部门的人数

create or replace function part(char1 varchar2) return varchar2
as
    sum1      number;
    resultStr varchar2(32);
begin
    select count(EMP.DEPTNO)
    into sum1
    from SCOTT.DEPT
             left join SCOTT.EMP on DEPT.DEPTNO = EMP.DEPTNO
    where DNAME = char1;

    resultStr := char1 || '有' || sum1 || '个人';
    return resultStr;
end;


select PART('SALES')
from DUAL;

结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#,图像二值化(07)——全局阈值的迭代算法及其源代码

1、 全局阈值的迭代算法 图像阈值分割---迭代算法 (1) 为全局阈值选择一个初始估计值T(图像的平均灰度)。 (2) 用T分割图像。产生两组像素:G1有灰度值大于T的像素组成,G2有小于等于T像素组成。 (3) 计算G1和G2像素的平均灰度值m1和m2; (4) …

机器学习笔记之Sigmoid信念网络(二)醒眠算法

机器学习笔记之Sigmoid信念网络——醒眠算法引言回顾Sigmoid\text{Sigmoid}Sigmoid信念网络的模型表示Sigmoid\text{Sigmoid}Sigmoid信念网络——对数似然梯度求解过程中的问题醒眠算法基于平均场假设变分推断求解后验概率平均场理论求解后验的弊端醒眠算法引言 上一节介绍了对…

jsp+servlet+mysql实现的在线图书商城源码附带论文开题报告及视频指导教程

今天给大家演示的是一款由jspservletmysql实现的在线图书商城系统,主要分为前台后后台管理员功能,前台用户可以浏览查看各类图书信息,可自定义搜索,注册登录后可以将书添加到购物车,购物车中的商品可以提交订单&#x…

【复习笔记】JavaWeb实验重点代码

JavaWeb实验重点代码笔记 一、课上练习题目汇总(部分) 题目一 基础HTML、CSS和JavaScript 1.1 问题要求 页面上有下拉菜单、文本框、跳转按钮并排放置,当下拉菜单选中某个具体网站名称时,文本框出现其对应的链接地址&#xff0…

Linux环境下vs code中Markdown与PlantUML联合工作

PlantUML是一个可以让你快速编写UML图的组件。 在线服务器 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写…

零膨胀泊松回归案例分析

零膨胀泊松回归分析 计数研究模型中,常用泊松回归模型,但泊松回归模型理论上是要求平均值与标准差相等,如果不满足,则可使用负二项回归模型 在实际研究中,会出现一种情况即因变量为计数变量,并且该变量包…

Lua闭包和Upvalue上值

一、lua中的作用域 在Lua语言中声明的变量默认是全局变量,声明局部变量需要使用local关键字,和其他语言相比这有点特殊。 -- 全局变量 a 10function func()b 100 -- 仍然是全局变量local c 20 -- func的局部变量 end func()print(a b) -- 输出…

终极.NET混淆器丨.NET Reactor产品介绍

无与伦比的 .NET 代码保护系统,可完全阻止任何人反编译您的代码。 产品优势 01、混淆技术 .NET Reactor通过向 .NET 程序集添加不同的保护层来防止逆向工程。除了标准的混淆技术之外,它还包括NecroBit、虚拟化、x86代码生成或防篡改等特殊功能。NET Re…

xilinx srio ip学习笔记之初识srio

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之初识srio前言IP 设置总结前言 因为工作原因,需要对rapidio 的协议进行了解,在xilinx的IP核中,是对应着Serial R…

这支隐藏“球队”,颠覆消费品「赛场」

【潮汐商业评论/原创】 大好的黄金周末,Fred约了几个朋友来家里看球。按照他的计划,周五准备下班后,他赶紧得去一趟附近的大型超市扫货,买一批零食酒水招待朋友。没想到的是,好不容易等到快下班了,领导通知…

外包呆一年,外包的工作经历怎么写?外包的项目经验怎么写?

0. 先来看下大家的各种问题? 外包的工作经历怎么写?外包的项目经验怎么写?外包如何优化简历?进入外包后黑化了简历,如何成功跳出外包圈?外包该如何提升自己?外包仔如何自我救赎? ……

前端基础_离线Web应用概述

离线Web应用概述 在Web应用中使用缓存的原因之一是为了支持离线应用。在全球互联的时代,离线应用仍有其实用价值。当无法上网的时候,你会做什么呢?你可能会说如今网络无处不在,而且非常稳定,不存在没有网络的情况。但…

【服务器数据恢复】误操作导致ocfs2文件系统被格式化的数据恢复案例

服务器故障: 用户误操作将linux文件系统误装入到Ocfs2文件系统的数据卷上,导致原始Ocfs2文件系统被格式化为Ext4文件系统。 因为Ext4文件系统每隔几百兆就会写入文件系统的原始信息,所以本案例中的原始Ocfs2文件系统中的数据可能受到一定程度…

搭建开源版个人图床

在微博图床、gitee、jsDelivr 陆续被 ban 的今天,很有必要搭建自己的图床系统了。 兰空图床 兰空图床官网:https://www.lsky.pro docker版本:https://hub.docker.com/r/halcyonazure/lsky-pro-docker 本次讲解使用 docker 版本进行部署使用 …

linux跟踪技术之ebpf

ebpf简介 eBPF是一项革命性的技术,起源于 Linux 内核,可以在操作系统内核等特权上下文中运行沙盒程序。它可以安全有效地扩展内核的功能,而无需更改内核源代码或加载内核模块。 比如,使用ebpf可以追踪任何内核导出函数的参数&…

漫画电学原理

电是什么 电压 电压是两点的电势差。 电流是指每秒在导线中流动的电量。 电功率是指在1s内消耗的电能。 电的本质是什么 万物都是有原子构成,原子有原子核(正电),核外电子(负电)构成。电子的定向移动形成了电。 电子离开原子,原子的电子减少,从而带正电。带正电的…

互联网时代“陨落”,国家发布元宇宙战略的信号对失业和担心失业的我们带来了什么启迪?

互联网这头“猪 ”真的掉下来了 流量红利已经一去不复返了!3年前业界其实已经发出各种密集信号,在当时无论是BAT还是一些经济学家在3年前都已经预测过,互联网的流量模式已经衰竭,并且它将一去不复返。 曾经处于互联网大潮的我们…

day10Git

1.Git介绍 1.1版本控制(理解) 无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况 1.2开发中存在的问题(理解) 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光…

HTC FOCUS 3连接FOHEART H1数据手套

本教程介绍使用H1数据手套与HTC腕带式追踪器驱动VR中的虚拟手运动,实现手部的追踪及定位。 需要准备的硬件: 1、FOHEART H1数据手套 2、HTC VIVE Focus 3一体机 3、HTC VIVE 腕带式追踪器 01 一体机连接腕带追踪器 首先断开Focus3的手柄&#x…

【JavaWeb】Mybatis深度进阶练习

学习目标 能够使用映射配置文件实现CRUD操作能够使用注解实现CRUD操作 文章目录1、配置文件实现CRUD1.1 环境准备1.2 查询所有数据1.2.1 编写接口方法1.2.2 编写SQL语句1.2.3 编写测试方法1.2.4 起别名解决上述问题1.2.5 使用resultMap解决上述问题1.2.6 小结1.3 查询详情1.3.1…