当前位置: 首页 > news >正文

Oracle 视图、存储过程、函数、序列、索引、同义词、触发器

优质博文:IT-BLOG-CN

一、视图

从表中抽出的逻辑上相关的数据集合,视图是一种虚表,视图是建立在已有表的基础之上,视图赖以建立的这些表称为基表。向视图提供数据的是 SELECT语句,可以将视图理解为存储起来的SELECT语句。视图中的数据会随着基表的变化而变化。

那为什么要使用视图呢?
1)、控制数据访问
2)、简化查询
3)、避免重复访问相同的数据

【1】创建视图语句:CREATE VIEW举个栗子看下:

create or replace view empview 
as 
select employee_id emp_id,last_name name,department_name
from employees e,departments d
Where e.department_id = d.department_id

【2】删除视图:DROP VIEW
【3】TOP_N分析:分析查询一个列中最大或最小的n个值:其实就是现实列的个数,相当于Mysql中的limit
在这里插入图片描述

二、存储过程

存储过程是存储在数据库中提供所有用户程序调用的子程序。它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升

--创建存储过程的语句
create [or replace] procedure 存储过程名[(@参数1 类型,@参数2 out 类型……)]as变量名  类型;begin程序代码体end;

【栗子】认真看看也就懂了

--如果命令行中创建时,修改结束语
delimiter //
create or replace procedure p2
(@name in varchar2,@age int,@msg out varchar2)
--参数列表中,声明变量类型时切记不能定义大小,只写类型名即可,例如参数列表中的name变量的声明
--参数列表中,输入参数用in表示,输出参数用out表示,不写时默认为输入参数。
------------输入参数不能携带值出去,输出参数不能携带值进来,当既想携带值进来,又想携带值出去,可以用in out
as--存储过程中定义的参数列表,当然我就举个栗子,下面这个参数后续无用@last_name varchar(50);
beginSELECT name FROM table WHERE id=1 INTO @msg;--赋值时除了可以使用:=,还可以用into来实现--上面子句等价于select '姓名'||name||',年龄'||age into msg from dual;
end;
//--执行存储过程
--在SQLPlus中运行PL/SQL块前,如果要将执行结果输出,需要先执行 set serveroutput on 命令
set serveroutput on;
declaremsg varchar2(100);
--SQL环境下,基本语法为:call sp_name [参数名];
--PL/SQL环境下,基本语法为:begin sp_name [参数名] end;
beginp2('张三',23,msg);dbms_output.put_line(msg);
end;

三、函数

函数与存储过程的结构类似,但是函数必须有一个return子句,用于返回函数值。

--创建序列号格式
CREATE SEQUENCE sequence[INCREMENT BY n]  --每次增长的数值[START WITH n]    --从哪个值开始[{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}]     --是否需要循环[{CACHE n | NOCACHE}];  --是否缓存登录

【栗子】好好研究下吧,精华都在下面:

create or replace function f1
RETURNS varchar--必须有返回值,且声明返回值类型时不需要加大小
asmsg varchar(50);
beginmsg := 'hello world';return msg;
end;--执行函数方式1
select f1() from dual;
--执行函数方式2
set serveroutput on;
begin dbms_output.put_line(f1());
end;

【总结】:函数与存储过程的区别:执行方式略有不同,存储过程的执行方式有两种(①:使用execute②:使用beginend),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select f1() form dual;)。还有就是如果只有一个返回值,用存储函数,否则,一般用存储过程。

四、序列

提供有规律的数值,可供多个用户用来产生唯一数值的数据库对象。主要用于提供主键值。将序列装入内存可以提高访问效率。

--创建序列号格式
CREATE SEQUENCE sequence[INCREMENT BY n]  --每次增长的数值[START WITH n]    --从哪个值开始[{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}]     --是否需要循环[{CACHE n | NOCACHE}];  --是否缓存登录

【1】查询数据字典视图USER_SEQUENCES获取序列定义信息。
【2】NEXTVALUE:返回序列中下一个有效的值,任何用户都可以引用。CURRVAL:存放序列的当前值。
【3】修改序列:修改序列的增量、最大值、最小值、循环选项、是否装入内存。

ALTER SEQUENCE dept_deptid_seqINCREMENT BY 20MAXVALUE 999999NOCACHENOCYCLE;

【4】删除序列:DROP SEQUENCES语句删除。

DROP SEQUENCE dept_deptid_seq;

五、索引

提高查询效率,一种独立与表的模式对象,可以存储在于表不同的磁盘或表空间,索引损坏只影响查询速度。
【1】自动创建索引:在定义PRIMARY KEYUNIQUE约束后系统自动在响应的列上创建唯一性索引。
【2】手动创建索引:可以在其他列上添加非唯一索引,以加速查询。

CREATE INDEX index
ON table (column[, column]...);

【3】当出现如下情况时,适合创建索引:①、列中数据值分布范围很广。②、列经常出现在WHERE子句或连接条件中。③、表经常被访问而且数据量很大,访问的数据大概占数据总量的2%4%
【4】查询索引:USER_INDEXS,删除索引:DROP INDEX index

六、同义词

给对象起别名,缩短名字方便访问。

CREATE [PUBLIC] SYNONYM synonym
FOR    object;

七、触发器

触发器是在事件发生时隐式地自动运行的PL/SQL程序块,不能接收参数,不能被调用。

DELIMITER //  --先临时修改一下语句分隔符,这样就可以在触发器定义中使用分号;CREATE[ORREPLACE]TRIGGER trigger_name{BEFORE|AFTER}{INSERT|DELETE|UPDATE[OF column[,column]]}ON{table_name|view_name}[REFERENCING{OLD[AS]old_name|NEW[AS]new_name}][FOR EACHROW][WHEN trigger_condition]trigger_body;--尾随一个实例
DELIMITER //
CREATE OR REPLACE TRIGGER POLEINFOTABLE_CYCLE  AFTER INSERT OR UPDATE OF CIRCUITRYTYPEPARTAL,TESHUQUPARTAL,UNITSTATUSPARTAL ON POLEINFOTABLE  FOR EACH ROW  DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN    --这里可以使用 OLD 和 NEW ;--old表示插入之前的值,new表示新插入的值;(old用在删除和修改,new用在添加和修改)update poleinfotable set MINCYCLE=least(CIRCUITRYTYPEPARTAL,UNITSTATUSPARTAL,TESHUQUPARTAL); 
COMMIT; 
END;
//
DELIMITER ;

相关文章:

Oracle 视图、存储过程、函数、序列、索引、同义词、触发器

优质博文:IT-BLOG-CN 一、视图 从表中抽出的逻辑上相关的数据集合,视图是一种虚表,视图是建立在已有表的基础之上,视图赖以建立的这些表称为基表。向视图提供数据的是 SELECT语句,可以将视图理解为存储起来的SELECT语…...

网站被浏览器提示“不安全”的解决办法

在互联网时代,网站的安全性直接关系到用户体验和品牌形象。当用户访问网站时,如果浏览器出现“您与此网站之间建立的连接不安全”的警告,这不仅会吓跑潜在客户,还可能对网站的SEO排名造成等负面影响。 浏览器发出的“不安全”警告…...

typescript定义函数的传参、返回值

Render 函数中定义函数传参 interface List {id: number;name: string; }interface Result {data: List[]; //表示由 List 接口组成的数组 }function Render(result: Result) {result.data.forEach(value > {console.log(value);}); }let result {data: [{id: 1,name: 张三…...

GlimmerHMM安装与使用-生信工具24

GlimmerHMM 01 概述 GlimmerHMM是一种基于广义隐马尔科夫模型(GHMM)的新型基因预测工具。虽然该基因预测工具符合GHMM的总体数学框架,但它还结合了从GeneSplicer程序中改编的剪接位点模型。可变长度的特征状态(例如外显子、内含…...

Elasticsearch架构基本原理

Elasticsearch的架构原理可以详细分为以下几个方面进行介绍: 一、Elasticsearch基本概念 Elasticsearch(简称ES)是一个基于Lucene构建的开源、分布式、RESTful搜索和分析引擎。它支持全文搜索、结构化搜索、半结构化搜索、数据分析、地理位…...

STM32自己从零开始实操08:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感:通低频阻高频的。仿真中高频信号通过电感,因为电感会阻止电流发生变化,故说阻止高频信号 电容:隔直通交。…...

无线物联网练习题

文章目录 选择填空简答大题 选择 不属于物联网感知技术的是(A) A:ZigBee B:红外传感器 C:FRID D:传感器 ZigBee是一种无线通信技术,虽然它常用于物联网中作为设备之间的通信手段,但它本身并不是一种感知技术 关于物联网于与互联网的区别的描述&#xff…...

Java的日期类常用方法

Java_Date 第一代日期类 获取当前时间 Date date new Date(); System.out.printf("当前时间" date); 格式化时间信息 SimpleDateFormat simpleDateFormat new SimpleDateFormat("yyyy-mm-dd hh:mm:ss E); System.out.printf("格式化后时间" si…...

数据库设计规范详解

一、为什么需要数据库设计 1、我们在设计数据表的时候,要考虑很多问题。比如: (1) 用户都需要什么数据?需要在数据表中保存哪些数据? (2) 如何保证数据表中数据的 正确性,当插入、删除、更新的时候该进行怎样的 约束检査 ?. (3) 如何降低数据表的 数据…...

Android12 MultiMedia框架之MediaExtractorService

上节学到setDataSource()时会创建各种Source,source用来读取音视频源文件,读取到之后需要demux出音、视频、字幕数据流,然后再送去解码。那么负责进行demux功能的media extractor模块是在什么时候阶段创建的?这里暂时不考虑APP创建…...

Chapter 8 Feedback

Chapter 8 Feedback 这一章我们介绍feedback 反馈运放的原理. 负反馈是模拟电路强有力的工具. 8.1 General Considerations 反馈系统如下图所示 Aolamp open-loop gain即开环增益. Aolxo/xi β \beta β 是 feedback factor, 注意方向. β x f x o \beta\frac{x_{f}}{x_{o…...

Administrators就最高了???system是什么??本地用户提权内网学习第三天 你知道uac是什么??

我们今天来说说本地用户提权的操作,我们在有webshell过后我们要进行进一步的提权操作,要不然对我们后期的内网渗透会有一些阻碍的操作。比如说我们使用mimikatz来进行抓取密码,就不能够成功。 Administrators与system的区别 我们来说说Admin…...

回溯 | Java | LeetCode 39, 40, 131 做题总结(未完)

Java Arrays.sort(数组) //排序 不讲究顺序的解答,都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意,sum - candidates[i];很重要,也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…...

Linux系统上部署Whisper。

Whisper是一个开源的自动语音识别(ASR)模型,最初由OpenAI发布。要在本地Linux系统上部署Whisper,你可以按照以下步骤进行: 1. 创建虚拟环境 为了避免依赖冲突,建议在虚拟环境中进行部署。创建并激活一个新…...

申请一张含100个域名的证书-免费SSL证书

挑战一下,申请一张包含100个域名的证书 首先,我们访问来此加密网站,进入登录页面,输入我的账号密码。 登录后,咱们就可以开始申请证书,首先说一下,咱账号是SVIP哦,只有SVIP才可以申…...

爬数据是什么意思?

爬数据的意思是:通过网络爬虫程序来获取需要的网站上的内容信息,比如文字、视频、图片等数据。网络爬虫(网页蜘蛛)是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 学习一些爬数据的知识有什么用呢&#x…...

Pytorch实战(二)

文章目录 前言一、LeNet5原理1.1LeNet5网络结构1.2LeNet网络参数1.3LeNet5网络总结 二、AlexNext2.1AlexNet网络结构2.2AlexNet网络参数2.3Dropout操作2.4PCA图像增强2.5LRN正则化2.6AlexNet总结 三、LeNet实战3.1LeNet5模型搭建3.2可视化数据3.3加载训练、验证数据集3.4模型训…...

wordpress 付费主题modown分享,可实现资源付费

该主题下载地址 下载地址 简介 Modown是基于Erphpdown 会员下载插件开发的付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容、团购下载的WordPress主题,一款针对收费付费下载资源/付费查看内容/付费阅读/付费视频/VIP会员免费下载查看/虚拟资源售…...

【INTEL(ALTERA)】NIOS II调试器中的重新启动按钮不起作用

目录 说明 解决方法 说明 在 Nios II SBT 调试Eclipse时,如果单击 重新启动 图标, 执行被暂停, 以下错误消息: Dont know how to run. Try "help target." 解决方法 终止程序,再次下载,并启…...

Hive On Spark语法

内层对象定义之特殊数据类型 Array DROP TABLE IF EXISTS test_table_datatype_array; CREATE TABLE test_table_datatype_array (ids array<INT> ) LOCATION test/test_table_datatype_array;SELECTnames,names[1]array(names[2],names[3])names[5],names[-1],array_c…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...