Oracle数据库常见对象-索引、视图、存储过程、函数和触发器

2023-05-16

转发来源:https://blog.csdn.net/someonemh/article/details/80773582

以下总结常见的数据库对象,供自己复习

如有错误希望指出,共同学习!

一、索引
什么是索引?

  索引是一种用于提高查询效率的数据库对象,使用索引可以快速定位数据,减少磁盘IO操作次数。索引是由数据库自动维护,删除或破坏索引不会对数据表造成影响,只会影响查询速度。

索引的创建语法?

create [unique| bitmap]  INDEX index_name ON table_name(column1[,column2…]);

索引的分类?

唯一性索引、非唯一性索引 :按照索引字段是否允许出现重复划分

单字段索引、联合索引     :按照索引基于字段的数目划分

普通索引、函数索引       :按照索引基于的字段是普通字段还是复合表达式划分

B树索引、位图索引        :按照索引的数据结构划分

索引创建的原则?

1)、主键、外键创建索引

2)、数据量大于300行的数据表建议创建索引

3)、若经常多表联合查询,则连接字段应该创建索引

4)、经常出现在where字句中的字段建议使用索引

5)、索引应该创建在小字段上,对于大的文本字段甚至超长字段,不要创建索引

6)、频繁进行数据操作的表,不建议创建太多的索引

二、视图
什么是视图?

视图是一种虚表,在已有的数据表或其他视图的基础上创建的,可以理解为存储起来的查询语句,视图本身不存储数据,因此对虚表的操作最终都会转换为对基表的操作。

视图有什么优点缺点?

优点:

1)、可以存储复杂的查询语句,简化查询

2)、安全性角度,从视图中查询到的数据只是基表数据中的一部分,这样可以屏蔽数据表结构,

      限制对数据的访问。

3)、逻辑数据独立性,视图的存在可以使得应用程序和数据表一定程度上相互独立,应用程序可

     以建立在视图之上,没有视图的话,应用程序必定是建立在数据表上的。

4)、数据库中实际上保存的视图编译后的查询指令,使用视图查询可以避免编译过程,提高运

     行效率

缺点:

1)、对视图的操作最终都会转换为对基表的操作,因此如果是对复杂的视图的修改操作可能会失

     败。

创建视图的语法格式?

create [or replace] VIEW view_name as subQuery;

三、存储过程、函数
存储过程

什么是存储过程?

  存储过程用于执行特定的操作,将经常需要执行的特定操作创建为存储过程,可以简化客户端应用程序的开发和维护,由于这些操作创建为存储过程之后,在数据库服务器端存储的是其编译后的指令,因此调用存储过程是不需要重新编译,可以提高运行效率。

存储过程的创建语法?

create [or replace] procedure procedure_name

[(形式参数1[,形式参数2..])]

IS | AS

[本地变量声明]

begin

<执行语句>

[<异常处理代码>]

end [<procedure_name>];

函数

什么是函数?

  函数用于返回特定的数据,可以将应用程序中经常使用SQL语句返回特定数据的操作创建为函数,通过函数可以简化客户端应用程序的开发和维护,提高应用程序的运行性能。

创建函数的语法格式?

create [or replace] function function_name [(形式参数1[,形式参数2..])]

retrun <dataType>

IS | AS

[本地变量声明]

begin

<执行语句>

[<异常处理>]

end [<function_name>];

存储过程与函数的区别?

1)、函数只能使用IN模式参数接收外界传入的数据,而存储过程可以用IN、OUT、IN OUT 三种

2)、函数必须有且只有一个返回值,用于将计算结果返回给调用环境;存储过程不允许有返回

     值,但可以使用OUT、或IN OUT模式参数返回多个值给调用环境

3)、函数的返回值必须是Oracle数据库支持的类型,不允许使用PL/SQL特有的数据类型

4)、函数不允许向存储过程一样被独立调用,函数只能作为表达式的一部分来使用

四、触发器
什么是触发器?

   触发器是指被隐含执行的存储过程,可以使用PLSQL、java或C语言进行开发。当发生特定的事件(比如修改表、创建对象、登录到数据库等操作)时,系统会自动执行触发器中的代码,类似于高级编程语言中的事件监听器,主要用于数据的维护。

   触发器由:触发事件、触发条件、触发操作三部分组成。

触发器的分类?

DML触发器、系统事件触发器、用户事件触发器

语句级触发器、行级触发器、INSTEAD OF触发器

创建触发器的语法格式?

create [or replace] trigger trigger_name

before insert or update or delete on table_name

declare

[声明变量]

begin

<触发操作>

end;

触发器的应用?

安全性保护、对数据修改值的审计、提供完整性校验规则、提供数据库表的同步复制、事件日志记录等。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle数据库常见对象-索引、视图、存储过程、函数和触发器 的相关文章

  • CSS隐藏元素、BFC、元素居中、布局

    1 css中有哪些方式可以隐藏页面元素 xff1f 区别是什么 xff1f 1 1 display none 元素在页面上将彻底消失 xff0c 元素本身占有的空间会被其他元素占有 xff0c 导致浏览器的重排和重绘 特点 xff1a 元素
  • 响应式设计和CSS提高性能的方法

    一 响应式设计 1 是什么 xff1f 是一种网络页面设计布局 xff0c 页面的设计与开发应当根据用户行为以及设备环境 xff08 系统平台 屏幕尺寸 屏幕定向等 xff09 进行相应的响应和调整 2 常见特点 xff08 1 xff09
  • js事件循环机制

    一 同步任务与异步任务 JavaScript是一门单线程 语言 xff0c 但是单线程并不意味着阻塞 实现单线程非阻塞的方式就是事件循环机制 在JavaScript中 xff0c 所有的事件都可以分为同步任务和异步任务 同步任务 xff1a
  • 简易MIMO-OFDM系统的设计

    0 完整源码获得方式 订阅MATLAB FPGA教程 xff0c 免得获得教程案例以及任意2份完整源码 MIMO OFDM系统的接收信号是多个发射天线发送信号的衰落与加性噪声的线性叠加 xff0c 若采用通常SISO OFDM系统或MIMO
  • 栈的定义和操作

    一 栈的定义 栈是一种操作受限制的线性表 xff0c 将允许进行插入 删除的一端称为栈顶 xff0c 另一端称为栈底 二 栈的分类 栈主要分为静态栈和动态栈 xff0c 静态栈类似于数组 xff0c 而动态栈类似于链表 xff0c 但只能对
  • 用C语言和前序遍历创建一棵二叉树

    一 二叉树的介绍 二叉树的特点是二叉树的每个结点的度都不大于2 xff0c 可以视为每个结点都有左孩子和右孩子 故二叉树结点的数据结构为 typedef int BDataType typedef struct BTNode BDataTy
  • 超市购物程序设计

    一 任务介绍 1 任务描述 去超市购物说人们日常生活的重要事情之一 在超市中有很多日常生活的用法 xff0c 如水果 蔬菜 洗衣机 电冰箱等 人们只能买到超市中的已有商品 xff0c 如果所需要的商品在超市中没有或已经卖完了 xff0c 那
  • 如何在IDEA中配置XML、添加XML文件样板以及设置项目编码方式

    一 如何在IDEA中配置XML 1 首先保证本地电脑上有apache maven包 xff0c 打开IDEA 2 点击File下拉菜单中的Settings xff0c 弹出Settings菜单框 3 在弹出的菜单框中选择Build Exec
  • Java之String类与StringBuffer类

    一 String类 1 实例化方式 1 xff09 直接赋值法 String str 61 34 abc 34 String类的设计采用了共享设计模式 在JVM底层实际上会自动维护一个对象池 xff08 字符串对象池 xff09 xff0c
  • 人脸识别项目的测试用例

  • 球机和枪机的区别

    球机 和 枪机 的区别最明显的应该就是外形的区别 xff0c 那么 xff0c 球机和枪机还有什么深层次的区别呢 xff1f 枪机即 枪式摄像机 xff0c 其监控位置固定 xff0c 只能正对某监控位置 xff0c 所以监控方位有限 枪机
  • STM32的USART注意

    在USART的发送端有2个寄存器 xff0c 一个是程序可以看到的USART DR寄存器 另一个是程序看不到的移位寄存器 对应USART数据发送有两个标志 xff0c 一个是TXE 61 发送数据寄存器空 xff0c 另一个是TC 61 发
  • 数据传输中断和查询的区别

    中断方式就是在接受数据时 xff0c 微控制器转入中断服务程序对接受到的数据进行处理 xff0c 而查询方式就是通过查询状态寄存器中接受状态位对接收到的数据进行处理 xff0c 两者在工作上的区别主要在于 xff0c 中断方式微控制器可以执
  • C语言 HTTP发送post和get请求

    安装curl环境 xff1a apt install curl apt get install libcurl4 openssl dev 使用C语言来做HTTP协议 xff0c 然后发送post和get请求 xff0c 这里为post请求的
  • Verilog中输入数据范围的判断

    0 完整源码获得方式 订阅MATLAB FPGA教程 xff0c 免得获得教程案例以及任意2份完整源码 在系统设计的过程中 xff0c 经常需要根据输入数据的值 xff0c 对相关信号的值进行改变 如果输入数据的边界值数量比较少 xff0c
  • xp无法识别u盘exFAT。插入提示格式化

    xp无法识别u盘exFAT 插入提示格式化 肯定不能格式化 xff0c u盘装的都是数据 xff0c 一搜 xff0c 原来是xp太老了 不识别exFAT格式 下了个补丁 WindowsXP KB955704 x86 CHS exfat补丁
  • 迅雷x导入未完成任务失败的解决办法。

    最近用x雷下东西 xff0c 卸载时不小心点了删除下载任务 再打开时任务已经没了 怎么办 文件还没下完呢 重装x雷 导入未完成任务 结果失败 我dnnm 十几年的软件 xff0c 这么重要的功能都没做好 xff1f xff1f 故意的吧 经
  • LSP编程之64位实现的一些经验。

    以前32位时 xff0c lsp代码正常运行 xff0c 但安装在win7后也能运行 xff0c 但逐渐发现32位的lsp dll只能过滤32位的进程 64位的进程似乎没有影响 查看dll模块也没有我的lsp dll身影 百度了下资料 发现
  • 判断字符串是否有中文

    hasch cpp 定义控制台应用程序的入口点 include 34 stdafx h 34 include lt windows h gt bool hasChinese const std wstring amp src for int
  • 修复机械硬盘那些事

    关于降速 就是硬盘出现许多错误后 xff0c 比如坏道 xff0c 硬盘传输模式会不断降级 xff0c 慢到只有1 5M s 读取速度 解决办法是格式化 xff0c 删除 xff0c 重启 重新分区 然后速度测试恢复了90M s 正常了 关

随机推荐