产品特色
编辑推荐
本书是Oracle PL/SQL入门类畅销书的全新改造,适用于Oracle OCP认证,Oracle 11g、Oracle 12c、Oracle 10g、Oracle 9i等。
1.教程+同步视频+实例分析+海量资源+在线服务。
2.扫描书中二维码,可在手机、电脑同步看教学视频。
3.112集高清微视频覆盖全书,集视、听演示于一体,边看边学更快捷。
4.263项OCP认证试题详尽分析,阅读源代码快速进阶。
5.小说式编写风格,幽默风趣。
6.实战派资深讲师,为几十家大型企业做过培训。
7.编写方式采用“基础知识+中小实例”模式编写,由浅入深,扫除学习障碍,快速学习。
8.在线服务:QQ群、微信公众号在线服务,即时在线交流本书的所有疑难问题。
内容简介
《Oracle PL/SQL从入门到精通》是一本覆盖OCP认证内容、带有视频讲解、浅显易懂、幽默风趣、实例丰富、可操作性很强的Oracle PL/SQL程序设计入门用书,适用于Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i等多个版本。
《Oracle PL/SQL从入门到精通》主要内容有:Oracle的安装及相关配置,PL/SQL程序设计语言概述,Oracle SQL Developer简介,常用的SQL*Plus命令,PL/SQL变量的声明与使用,编写PL/SQL语言的可执行语句,PL/SQL与Oracle服务器之间的交互,分支(条件)语句,PL/SQL语言的循环语句,PL/SQL中常用的组合数据类型,SQL游标(cursor),显式cursor的高级功能,PL/SQL程序中的异常处理,过程的创建、维护和删除,函数的创建、维护和删除,PL/SQL软件包,PL/SQL软件包的高级特性和功能,数据库触发器,批量绑定及高级触发器特性, PL/SQL程序代码设计上的考虑、Oracle自带软件包及数据库优化简介,导出程序的源代码以及源代码加密。
《Oracle PL/SQL从入门到精通》适合作为Oracle PL/SQL程序设计的入门用书,也可作为企业内训、社会培训、应用型高校的相关教材。
作者简介
何明,商业荣誉硕士(新西兰梅西大学),信息系统研究生(新西兰奥克兰大学),工科学士(成都理工大学),OCP专业证书。30多年程序开发和数据库系统管理与维护工作经验。
1999年开始专职从事Oracle的培训与服务,同时还在Unitec(新西兰公立理工学院)任兼职讲师为大学本科生讲授数据库课程。主要培训和服务的大客户包括NEC、惠普(HP)、壳牌(Shell)、北电网络、中国移动、中国网通、天津地税局和财政局、中国民航、唐山承德钢铁集团、酒泉钢铁集团、索贝数码、西门子、中国银行、华夏银行、厦门银行、TOM在线有限公司、和北京邮政总局等。
目录
第0章Oracle的安装及相关配置
视频讲解:3集11分钟
0.1Oracle的安装
0.2Oracle11g和Oracle12c中的SQL*Plus
0.3scott用户及其对象维护
0.4本书中将用到的表
0.5SQL(StructuredQueryLanguage)
0.6本书所用的术语
0.7Oracle10g的SQL*Plus界面
0.8使用iSQL*Plus
0.9使用DOS窗口启动SQL*Plus
第1章PL/SQL程序设计语言概述
视频讲解:1集8分钟
1.1PL/SQL语言的体系结构
1.2模块化程序设计简介
1.3PL/SQL语言的优势
1.4PL/SQL程序块的结构
1.5使用SQL*Plus创建匿名程序块的步骤
1.6使用SQL*Plus创建、编辑和执行匿名块的实例
1.7您应该掌握的内容
第2章OracleSQLDeveloper简介
视频讲解:4集14分钟
2.1安装SQLDeveloper和创建数据库连接
2.2SQLDeveloper的菜单
2.3导出表的设计信息和源程序代码
2.4创建新对象和使用SQL工作表
2.5导出SQL语句的执行计划
2.6使用Oracle11g和12c自带的OracleSQLDeveloper
第3章常用的SQL*Plus命令
视频讲解:3集20分钟
3.1DESC[RIBE]命令
3.2SETLINE[SIZE]{80|n}命令
3.3L命令和ntext命令
3.4“/”命令
3.5n(设置当前行)命令和A[PPEND](附加)命令
3.6DEL命令
3.7C[HANGE]命令
3.8生成脚本文件
3.9编辑脚本文件
3.10直接运行脚本文件
3.11SPOOL命令
3.12将Oracle数据库的数据导出给其他系统
3.13将数据导出操作自动化
3.14商业智能软件读取Oracle数据的简单方法
3.15利用AUTOTRACE追踪SQL语句
3.16获取SQL*Plus的帮助信息
3.17您应该掌握的内容
第4章PL/SQL变量的声明与使用
视频讲解:5集25分钟
4.1PL/SQL变量的使用
4.2PL/SQL变量的声明和初始化
4.3字符串分隔符的说明与使用
4.4变量的数据类型
4.5%TYPE属性
4.6布尔变量的声明与使用
4.7替代变量与绑定变量
4.8LOB类型的变量
4.9声明PL/SQL变量指南
4.10您应该掌握的内容
第5章编写PL/SQL语言的可执行语句
视频讲解:5集18分钟
5.1PL/SQL语言中的词法单元
5.2标识符和定界符
5.3文字的使用和应用实例
5.4为程序代码加注释
5.5SQL函数在PL/SQL中的应用
5.6Oracle11g和12c的PL/SQL对序列操作的改进
5.7数据类型的转换
5.8PL/SQL中的运算符
5.9程序块的嵌套和变量的作用域
5.10变量的作用域和可见性的进一步探讨
5.11程序设计的指导原则
5.12您应该掌握的内容
第6章PL/SQL与Oracle服务器之间的交互
视频讲解:3集20分钟
6.1PL/SQL中的SQL语句及使用SELECT语句提取数据
6.2在PL/SQL中使用SELECT语句提取数据的实例
6.3利用分组函数从表中提取数据
6.4PL/SQL变量与列同名的问题及命名惯例
6.5数据库中数据维护概述和准备工作
6.6插入数据、修改数据和删除数据
6.7MERGE语句
6.8合并数据库中的数据行
6.9您应该掌握的内容
第7章分支(条件)语句
视频讲解:4集20分钟
7.1PL/SQL中的布尔条件
7.2IF语句以及简单IF语句的实例
7.3IF-THEN-ELSE和IF-THEN-ELSIF语句的执行流程
7.4IF-THEN-ELSE语句的实例
7.5IF-THEN-ELSIF语句的实例
7.6CASE表达式
7.7CASE语句
7.8GOTO语句
7.9您应该掌握的内容
第8章PL/SQL语言的循环语句
视频讲解:7集22分钟
8.1重复控制——循环语句及基本循环语句的语法
8.2基本循环语句的实例
8.3WHILE循环
8.4FOR循环
8.5反向FOR循环及使用循环的指导原则
8.6循环的嵌套和标号
8.7Oracle11g和Oracle12c引入的CONTINUE语句
8.8您应该掌握的内容
第9章PL/SQL中常用的组合数据类型
视频讲解:10集32分钟
9.1组合数据类型概述
9.2PL/SQL记录类型数据以及创建它的语法
9.3PL/SQL语言中的%ROWTYPE属性
9.4使用%ROWTYPE属性声明记录
9.5利用%ROWTYPE属性插入和修改记录
9.6INDEXBY表或PL/SQL表
9.7INDEXBY表的应用实例
9.8INDEXBY表的方法及使用实例
9.9INDEXBY记录表
9.10您应该掌握的内容
第10章SQL游标(cursor)
视频讲解:6集27分钟
10.1SQL隐式cursor的属性及其应用实例
10.2显式cursor概述
10.3控制显式cursor
10.4声明(显式)cursor
10.5打开(显式)cursor及从中提取数据
10.6关闭显式cursor及使用它的属性
10.7利用循环及属性控制cursor的实例
10.8cursor与记录
10.9您应该掌握的内容
第11章显式cursor的高级功能
视频讲解:6集16分钟
11.1cursor的FOR循环
11.2在cursor的FOR循环中使用子查询
11.3在cursor定义中使用子查询
11.4带参数的cursor
11.5FORUPDATE子句
11.6WHERECURRENTOF子句
11.7您应该掌握的内容
第12章PL/SQL程序中的异常处理
视频讲解:7集25分钟
12.1异常处理概述
12.2PL/SQL中的异常处理
12.3如何捕获异常
12.4如何捕获预定义的Oracle服务器错误
12.5如何捕获非预定义的Oracle服务器错误
12.6捕获异常的两个函数
12.7捕获用户定义的异常
12.8在程序块中异常的捕获与传播
12.9RAISE_APPLICATION_ERROR过程
12.10您应该掌握的内容
第13章过程的创建、维护和删除
视频讲解:7集33分钟
13.1模块化与分层的子程序设计
13.2PL/SQL的子程序
13.3过程的定义及创建
13.4创建过程的语法
13.5过程的参数模式(方式)
13.6使用IN参数模式的实例
13.7使用OUT参数模式的实例
13.8使用INOUT参数模式的实例
13.9传递实参的表示法
13.10在PL/SQL程序中调用一个过程
13.11在SQLDeveloper中调用过程
13.12在过程中声明和调用另一个过程
13.13在过程中处理异常
13.14在过程中没有处理异常
13.15过程的发现与删除
13.16您应该掌握的内容
第14章函数的创建、维护和删除
视频讲解:6集23分钟
14.1函数的概述以及创建函数的语法
14.2使用SQL*Plus或SQLDeveloper创建函数
14.3创建和调用存储函数的实例
14.4在SQLDeveloper中开发、调试和调用函数
14.5在SQL表达式中使用用户定义的函数
14.6从SQL表达式中调用函数的限制
14.7从SQL中用名字表示法或混合表示法调用函数
14.8函数的发现与删除以及函数与过程的比较
14.9您应该掌握的内容
第15章PL/SQL软件包
视频讲解:5集21分钟
15.1PL/SQL软件包概述
15.2PL/SQL软件包的组件及可见性
15.3PL/SQL软件包的开发方法
15.4创建PL/SQL软件包的说明
15.5创建PL/SQL软件包体
15.6创建和使用无体的PL/SQL软件包
15.7软件包的发现与删除
15.8在SQLDeveloper中开发和编译软件包说明
15.9在SQLDeveloper中开发和编译软件包体
15.10在SQLDeveloper中运行软件包
15.11您应该掌握的内容
第16章PL/SQL软件包的高级特性和功能
视频讲解:9集32分钟
16.1在PL/SQL中子程序的重载
16.2创建带有重载过程的软件包的实例
16.3STANDARD软件包与子程序重载
16.4前向引用(ForwardReferences)所造成的问题
16.5前向声明(ForwardDeclarations)
16.6软件包的初始化
16.7在SQL中使用软件包中的函数
16.8软件包中变量的持续状态
16.9软件包变量持续状态的实例
16.10软件包中cursor的持续状态
16.11在软件包中使用PL/SQL记录表(记录数组)
16.12您应该掌握的内容
第17章数据库触发器
视频讲解:6集48分钟
17.1触发器概述
17.2触发器的应用范围、设计原则以及分类
17.3DML触发器的创建
17.4触发器触发的顺序
17.5创建和测试语句触发器的实例
17.6带有条件谓词的语句触发器的实例
17.7创建和测试DML行触发器
17.8在行触发器中使用OLD和NEW限定符
17.9在行触发器中使用OLD和NEW限定符的实例
17.10利用WHEN子句有条件触发行触发器
17.11触发器执行模型概要及实现完整性约束的准备
17.12利用触发器来实现完整性约束
17.13INSTEADOF触发器及实例的准备工作
17.14创建INSTEADOF触发器的实例
17.15INSTEADOF触发器的测试实例
17.16触发器的管理与维护及与过程的比较
17.17触发器的管理与维护的实例
17.18您应该掌握的内容
第18章批量绑定及高级触发器特性
视频讲解:7集40分钟
18.1批量绑定概述及批量绑定的语法
18.2批量绑定FORALL的实例
18.3cursor属性%BULK_ROWCOUNT的应用
18.4在查询语句中使用BULKCOLLECTINTO子句
18.5在FETCH语句中使用BULKCOLLECTINTO子句
18.6带有RETURNING和BULKCOLLECTINTO关键字的FORALL语句
18.7利用Index数组进行批量绑定
18.8利用RETURNING子句将DML语句的结果直接装入变量
18.9变异表及在变异表上触发器的限制
18.10复合触发器(compoundtrigger)概述
18.11利用复合触发器解决变异表的错误
18.12创建基于DDL语句或基于系统事件的触发器
18.13用户登录和退出触发器的创建和测试
18.14触发器中的CALL语句
18.15数据库事件触发器的优点以及设计、管理和维护触发器要注意的事项
18.16您应该掌握的内容
第19章PL/SQL程序代码设计上的考虑、Oracle自带软件包及数据库优化简介
视频讲解:8集46分钟
19.1常量和异常的标准化概述
19.2标准化异常和标准化异常处理
19.3标准化常量
19.4本地子程序的应用
19.5程序的定义者权限与调用者权限
19.6自治事物
19.7使用自治事物的实例
19.8Oracle提供(自带)的软件包简介
19.9计算机内外存以及系统优化简介
19.10将程序常驻内存
19.11将数据缓存在内存中
19.12将数据常驻内存
19.13将查询的结果缓存在内存
19.14跨会话的PL/SQL函数结果缓存
19.15您应该掌握的内容
第20章导出程序的源代码以及源代码加密
20.1以命令行方式获取数据库系统的设计
20.2导出存储程序的接口参数
20.3导出存储程序的源代码
20.4导出触发器的类型、触发事件、描述及源代码
20.5PL/SQL源代码加密及动态加密
20.6使用CREATE_WRAPPED过程加密PL/SQL源代码
20.7使用CREATE_WRAPPED过程加密较长的代码
20.8PL/SQL封装实用程序简介
20.9PL/SQL封装实用程序应用实例
20.10加密的原则及DBMS_DDL与Wrap的比较
20.11您应该掌握的内容
结束语
参考文献
深入理解 Oracle PL/SQL:构建高效数据库应用 在现代信息技术飞速发展的浪潮中,数据已成为驱动各行各业的核心要素。而数据库,作为管理和存储这些宝贵数据的基石,其重要性不言而喻。在众多数据库系统中,Oracle以其强大的功能、卓越的性能和广泛的应用领域,占据着举足轻重的地位。而PL/SQL,作为Oracle数据库的内置过程化语言,更是解锁Oracle数据库强大潜力的关键。它能够让开发者在数据库内部编写复杂的逻辑,实现高效的数据处理、业务规则的实现以及应用程序的定制化开发。 本书并非是传统意义上枯燥的语法堆砌,而是旨在引领您踏上一段全面而深入的Oracle PL/SQL学习之旅。我们将从最基础的概念入手,逐步深入到PL/SQL的精髓,最终让您能够独立设计和开发出高性能、高可靠性的Oracle数据库应用程序。我们强调的不是死记硬背,而是理解其背后的原理,掌握其灵活的应用技巧,最终将PL/SQL的强大能力融入您的实际开发工作中。 为何选择PL/SQL? 在开始我们的旅程之前,让我们先探讨一下为什么PL/SQL在Oracle开发中如此重要。简单来说,PL/SQL将SQL的强大声明式查询能力与过程化编程的灵活性相结合。这意味着您无需将所有数据通过网络传输到应用程序服务器进行处理,然后将其写回数据库。相反,您可以直接在数据库服务器内部执行复杂的逻辑,这带来了显著的性能优势: 减少网络流量: 大量数据不必在客户端和服务器之间传输,显著提高了应用程序的响应速度,尤其是在处理大量数据时。 提高处理效率: 数据库服务器是为数据处理而优化的,在数据库内部执行逻辑通常比在应用程序层执行效率更高。 增强数据安全性: 将业务逻辑封装在数据库的存储过程和函数中,可以更好地控制数据访问和修改,提高数据的安全性。 实现代码重用: PL/SQL的存储过程、函数和包允许您创建可重用的代码模块,这使得开发和维护更加便捷高效。 更好地管理业务规则: 复杂的业务规则和约束可以直接在数据库层面实现,确保数据的一致性和完整性。 本书的学习路线图 本书将以一种循序渐进、由浅入深的方式引导您掌握Oracle PL/SQL。我们将精心设计每一章的内容,确保理论知识与实践操作紧密结合,让您在学习过程中能够融会贯通,真正做到学以致用。 第一部分:PL/SQL基础入门 Oracle数据库与SQL基础回顾: 在深入PL/SQL之前,我们有必要对Oracle数据库的基本架构以及SQL语言的核心概念进行一个快速但全面的回顾。这包括理解数据库对象(表、视图、索引等)、SQL的基本查询(SELECT, INSERT, UPDATE, DELETE)、常用函数以及数据约束。这部分内容将为后续PL/SQL的学习打下坚实的基础,确保所有读者都拥有相同的起点。 PL/SQL的诞生与核心理念: 我们将介绍PL/SQL的历史背景,以及它为何成为Oracle数据库不可或缺的一部分。您将了解PL/SQL与标准SQL的区别,理解其过程化语言的特性,并初步接触PL/SQL块(Block)的基本结构。 第一个PL/SQL程序: 理论结合实践,我们将引导您编写第一个简单的PL/SQL程序,例如打印“Hello, World!”。通过这个过程,您将熟悉PL/SQL的开发环境(如SQLPlus, SQL Developer),了解如何编写、编译和执行PL/SQL代码,并学习如何处理基本输出。 PL/SQL变量与数据类型: 变量是任何编程语言中的基本构建块。本章将详细介绍PL/SQL中各种基本数据类型(如NUMBER, VARCHAR2, DATE, BOOLEAN等),以及如何声明、初始化和使用变量。我们将深入讲解不同数据类型的特性和适用场景,帮助您写出更精确、更高效的代码。 PL/SQL中的流程控制结构: 掌握流程控制是编写复杂逻辑的关键。我们将详细讲解PL/SQL中的条件语句(IF-THEN-ELSIF-ELSE, CASE语句)和循环语句(LOOP, WHILE LOOP, FOR LOOP)。通过大量的实例,您将学会如何根据不同的条件执行不同的代码块,以及如何重复执行某个任务直到满足特定条件。 SQL与PL/SQL的融合: PL/SQL最强大的地方在于能够无缝地与SQL结合。本章将深入讲解如何在PL/SQL中执行SQL语句,包括使用`SELECT INTO`语句将查询结果赋值给变量,以及如何进行数据修改(INSERT, UPDATE, DELETE)操作。您还将学习如何使用`BULK COLLECT INTO`进行批量数据检索,大幅提升性能。 第二部分:PL/SQL的高级特性与应用 异常处理机制: 在实际开发中,错误是不可避免的。PL/SQL提供了强大的异常处理机制,能够优雅地捕获和处理运行时错误。我们将介绍预定义异常(如NO_DATA_FOUND, TOO_MANY_ROWS)和用户自定义异常,以及如何使用`EXCEPTION`块来处理异常,保证程序的健壮性。 游标(Cursor)详解: 游标是PL/SQL中处理多行查询结果的重要工具。我们将详细讲解显式游标和隐式游标的概念,以及如何声明、打开、读取、关闭游标,并演示如何使用游标进行行数据的逐条处理。同时,我们也将介绍游标的属性(如%FOUND, %NOTFOUND, %ROWCOUNT, %ISOPEN)及其应用。 记录(Record)与集合(Collection): 记录(Record)允许您将多个不同类型的数据项组合成一个逻辑单元,类似于结构体;而集合(Collection)则提供了在PL/SQL中处理数组、列表等数据结构的能力。本章将详细介绍PL/SQL中各种集合类型(VARRAY, Nested Table, Associative Array),并演示如何创建、操作和使用它们,实现更灵活的数据管理。 触发器(Trigger)的强大威力: 触发器是一种特殊的存储过程,它会在某个数据库事件(如INSERT, UPDATE, DELETE)发生时自动执行。我们将深入讲解触发器的分类(行级触发器、语句级触发器)、触发时机(BEFORE, AFTER)以及如何编写和管理触发器,以实现数据验证、审计、级联操作等高级功能。 存储过程(Stored Procedure)与函数(Function): 存储过程和函数是PL/SQL代码重用和封装的核心。本章将详细讲解它们的定义、参数传递(IN, OUT, IN OUT)、返回值以及如何调用。我们将演示如何将复杂的业务逻辑封装到存储过程和函数中,提高代码的可维护性和复用性。 包(Package)的组织与管理: 当项目规模增大时,将相关的存储过程、函数、变量和类型组织在一个包中,可以极大地提高代码的可维护性和可读性。我们将讲解包的规范(Package Specification)和包体(Package Body)的区别,以及如何使用包来管理和暴露PL/SQL对象。 第三部分:PL/SQL性能优化与实战技巧 PL/SQL性能优化的关键原则: 编写高效的PL/SQL代码是成功的关键。本章将探讨影响PL/SQL性能的常见因素,并介绍一些基本的优化原则,例如减少上下文切换、避免不必要的SQL解析、合理使用集合等。 SQL与PL/SQL的交互优化: 如何高效地在SQL语句和PL/SQL代码之间传递数据是性能优化的重点。我们将深入讲解`BULK COLLECT`和`FORALL`语句,以及它们在批量数据处理中的巨大优势,对比其与传统逐行处理的性能差异。 PL/SQL中的动态SQL: 在某些情况下,SQL语句需要在运行时才能确定。本章将介绍PL/SQL中的动态SQL技术,包括`EXECUTE IMMEDIATE`和`DBMS_SQL`包,并讲解如何安全、有效地使用它们,同时强调其潜在的SQL注入风险和防范措施。 高级PL/SQL特性与调试技巧: 我们将进一步探讨一些更高级的PL/SQL特性,例如自治事务、管道化表函数等,并分享实用的调试技巧,例如使用`DBMS_OUTPUT`、SQLPlus的`SET SERVEROUTPUT ON`命令,以及SQL Developer等IDE的调试工具,帮助您快速定位和解决问题。 实际项目案例分析: 为了巩固所学知识,我们将通过分析几个典型的实际项目案例,例如订单处理、报表生成、数据同步等,来演示如何将PL/SQL的各项技术应用于实际开发中。通过这些案例,您将能够更好地理解PL/SQL在解决实际业务问题中的强大作用。 本书的特色 清晰的逻辑结构: 内容从易到难,层层递进,确保读者能够轻松掌握。 丰富的实例: 大量贴近实际应用的代码示例,帮助读者快速理解概念并上手实践。 深入的原理讲解: 不仅关注“怎么做”,更关注“为什么这样做”,帮助读者深入理解PL/SQL的底层机制。 实战导向: 强调将理论知识应用于实际开发,通过案例分析加深理解。 注重性能优化: 贯穿全书的性能优化理念,让读者能够写出更高效的PL/SQL代码。 无论您是数据库初学者,还是有一定SQL基础但想深入掌握PL/SQL的开发者,亦或是希望提升Oracle数据库应用开发能力的资深技术人员,本书都将是您不可或缺的学习伙伴。通过本书的学习,您将能够自信地构建出更加复杂、高效、可靠的Oracle数据库应用程序,在数据驱动的时代脱颖而出。让我们一起开启这段精彩的PL/SQL探索之旅吧!