Oracle数据库基本概念(oracle数据库概述)
yuyutoo 2025-04-09 22:21 8 浏览 0 评论
1.PL/SQL中过程、函数以及包的概念
过程、函数与包都属于PL/SQL语句块中的命名块,过程和函数统称为子程序。包是一个逻辑单位,PL/SQL可以让开发人员把逻辑相关的类型、变量、游标和子程序放在一个包里,这样更加清楚,易理解。包通常由如下两部分组成:
包规范部分:定义程序接口,声明类型、常量、变量、异常、游标和可以使用的子程序声明。(有点类似于C语言中的头文件)
包体:用于实现包规范部分声明的子程序和游标。
2.游标的使用
游标是一个指向上下文区域的指针,这个上下文区域是PL/SQL语句块中在执行SELECT语句或者DML数据操纵语句时分配的。
游标的分类: 显式游标和隐式游标
(1) 显示游标的使用:
1)声明游标
CURSOR mycur(vartype number) is
select emp_no,emp_zc from cus_emp_basic
where com_no = vartype;
2)打开游标:
open mycur(000627) 注:000627:参数
3)读取数据
4)关闭游标
close mycur;
(2)游标的属性
Oracle 游标有4个属性: %ISOPEN , %FOUND , %NOTFOUND, %ROWCOUNT
%ISOPEN 判断游标是否被打开,如果打开%ISOPEN 等于true,否则等于false
%FOUND %NOTFOUND 判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false
%ROWCOUNT 返回当前位置为止游标读取的记录行数。
(3)基于游标定义记录变量
使用%ROWTYPE属性不仅可以基于表和视图定义记录变量,也可以基于游标定义记录变量。当基于游标定义记录变量时,记录成员名实际就是SELECT语句的列名和列别名。
(4)隐式游标的使用:
如果在pl/sql程序中使用了select语句进行操作,pl/sql会隐含处理游标定义,即称做隐式游标。这种游标不需要声明、打开和关闭。
使用隐式游标时要注意以下几点:
A、每一个隐式游标必须有一个into;
B、和显示游标一样,带有关键字into接收数据的变量时数据类型要与列表一致。
C、隐式游标一次只能返回移行数据。
(5)典型游标for 循环
游标for循环和显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行数据,当for循环开始时,游标自动打开(不需要open),每循环一次系统自动读取游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。
(6)在游标FOR循环中使用查询
在游标FOR循环中可以定义查询,由于没有显式声明所以游标没有名字,记录名通过游标查询来定义。
3.delete与truncate 区别
1)truncate 是DDL语句,delete 是DML语句;
2)truncate 速度远快于 delete.原因是:当我们执行delete操作时所有表数据先被copy到回滚表空间,数据量不同花费时间长短不一。而truncate是直接删除数据不进回滚表空间。
3)接(2)这也就导致了delete数据后我们可以运行rollback进行数据回滚,而truncate则是永久删除不能回滚;
4)truncate 操作不会触发表上的delete触发器,而delete会正常触发;
5)truncate语句不能带where条件意味着只能全部数据删除,而delete可删除部分数据;
6)truncate 操作会重置表的高水位线(High Water Mark),而delete不会。
4.Oracle集合操作
1)UNION: 由每个查询 选择的 所有不重复的行组成。并集不包含重复值, 默认按第 1 个查询的第 1 列升序排列。
2)UNION ALL:由每个查询 选择的 所有的行,完全并集包含重复值, 不排序。
3)MINUS : 在第一个查询中,不在后面查询中的行。不包含重复, 按第1 个查询的第 1 列升序排列。
4)INTERSECT:取每个查询结果的交集, 不包含重复行, 按第1 个查询的第 1 列升序排列。
5.Oracle常用函数
NVL与NVL2操作
1) NVL (expr1, expr2):expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
2) NVL2 (expr1, expr2, expr3) :expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
DECODE
SUBSTR
SUBSTR(v_tran_stat, p_card_arch.card_state, 1);
INSTR
6.Oracle触发器
触发器是只在事件发生时隐式地自动执行的PL/SQL块,不能接受参数,不能被显式调用。
触发器包括DML触发器、替代触发器与系统事件触发器。
DML触发器是对数据表进行DML语句操作(如insert、update、delete)时所触发的触发器。
替代触发器是对视图进行操作时定义的触发器,该类型的触发器只能定义在视图上。
系统事件触发器是对数据库实例或某个用户模式进行操作时定义的触发器。
相关推荐
- Python操作Word文档神器:python-docx库从入门到精通
-
Python操作Word文档神器:python-docx库从入门到精通动动小手,点击关注...
- Python 函数调用从入门到精通:超详细定义解析与实战指南 附案例
-
一、函数基础:定义与调用的核心逻辑定义:函数是将重复或相关的代码块封装成可复用的单元,通过函数名和参数实现特定功能。它是Python模块化编程的基础,能提高代码复用性和可读性。定义语法:...
- 等这么长时间Python背记手册终于来了,入门到精通(视频400集)
-
本文毫无套路!真诚分享!前言:无论是学习任何一门语言,基础知识一定要扎实,基础功非常的重要,找一个有丰富编程经验的老师或者师兄带着你会少走很多弯路,你的进步速度也会快很多,无论我们学习的目的是什么,...
- 图解Python编程:从入门到精通系列教程(附全套速查表)
-
引言本系列教程展开讲解Python编程语言,Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,它也是互联网最热门的编程语言之一。Python生态丰富,库(模块)极其丰富,这使...
- Python入门教程(非常详细)从零基础入门到精通,看完这一篇就够
-
本书是Python经典实例解析,采用基于实例的方法编写,每个实例都会解决具体的问题和难题。主要内容有:数字、字符串和元组,语句与语法,函数定义,列表、集、字典,用户输入和输出等内置数据结构,类和对象,...
- Python函数全解析:从入门到精通,一文搞定!
-
1.为什么要用函数?函数的作用:封装代码,提高复用性,减少重复,提高可读性。...
- Python中的单例模式:从入门到精通
-
Python中的单例模式:从入门到精通引言单例模式是一种常用的软件设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式通常用于那些需要频繁创建和销毁的对象,比如日志对象、线程池、缓存等...
- 【Python王者归来】手把手教你,Python从入门到精通!
-
用800个程序实例、5万行代码手把手教你,Python从入门到精通!...
- Python从零基础入门到精通:一个月就够了
-
如果想从零基础到入门,能够全职学习(自学),那么一个月足够了。...
- Python 从入门到精通:一个月就够了
-
要知道,一个月是一段很长的时间。如果每天坚持用6-7小时来做一件事,你会有意想不到的收获。作为初学者,第一个月的月目标应该是这样的:熟悉基本概念(变量,条件,列表,循环,函数)练习超过30个编...
- Python零基础到精通,这8个入门技巧让你少走弯路,7天速通编程!
-
Python学习就像玩积木,从最基础的块开始,一步步搭建出复杂的作品。我记得刚开始学Python时也是一头雾水,走了不少弯路。现在回头看,其实掌握几个核心概念,就能快速入门这门编程语言。来聊聊怎么用最...
- 神仙级python入门教程(非常详细),从0到精通,从看这篇开始!
-
python入门虽然简单,很多新手依然卡在基础安装阶段,大部分教程对一些基础内容都是一带而过,好多新手朋友,对一些基础知识常常一知半解,需要在网上查询很久。...
- Python类从入门到精通,一篇就够!
-
一、Python类是什么?大家在生活中应该都见过汽车吧,每一辆真实存在、能在路上跑的汽车,都可以看作是一个“对象”。那这些汽车是怎么生产出来的呢?其实,在生产之前,汽车公司都会先设计一个详细的蓝图...
- 学习Python从入门到精通:30天足够了,这才是python基础的天花板
-
当年2w买的全套python教程用不着了,现在送给有缘人,不要钱,一个月教你从入门到精通1、本套视频共487集,本套视频共分4季...
- 30天Python 入门到精通(3天学会python)
-
以下是一个为期30天的Python入门到精通学习课程,专为零基础新手设计。课程从基础语法开始,逐步深入到面向对象编程、数据处理,最后实现运行简单的大语言模型(如基于HuggingFace...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)