具体描述
内容简介
SQL(Structured Ouery Language)是关系数据库的基本操作语言。它主要包括数据查询,数据操纵、数据定义等功能,是应用程序与数据库进行交互操作的接口。PL/SQL(Procedural Language/SQL)是Oracle特有的编程语言,它可以像其他高级编程语言一样,编写出各种完整的数据库操作功能的程序。由于PL/SQL由Oracle系统本身编译执行,所以程序运行效率更高。《Oracle 10g SQL和PL/SQL编程指南》为Oracle数据库应用开发人员提供了SQL使用指南和PL/SQL编程技术。通过学习《Oracle 10g SQL和PL/SQL编程指南》,读者不仅可以掌握SQL和PL/SQL的基础知识,而且还可以掌握Oracle 10g SQL和PL/SQL的许多高级特征。
《Oracle 10g SQL和PL/SQL编程指南》可作为高等院校计算机相关专业的辅助教材,也可作为各类高级数据库编程人员的参考书。《Oracle 10g SQL和PL/SQL编程指南》的编写既考虑了SQL和PL/SQL的初学者,同时也兼顾到有经验的PL/SQL编程人员。《Oracle 10g SQL和PL/SQL编程指南》还可以作为培训五班的新材。
内页插图
目录
第I部分 Oracle 10g概述
第1章 Oracle简介
1.1 数据库的产生与发展
1.1.1 数据管理技术的产生与发展
1.1.2 数据库技术的发展
1.1.3 关系数据库产品简介
1.2 Oracle的产生与发展
1.3 Oracle 10g简介
1.3.1 Oracle 10g系列产品
1.3.2 Oracle 10g 数据库for Windows版本
第2章 数据库的建立
2.1 数据库逻辑设计
2.1.1 关系数据库设计基础
2.1.2 关系数据库规范化
2.2 数据库物理设计
2.3 数据库实施
2.4 创建数据库
2.4.1 数据库创建前的准备
2.4.2 安装数据库服务器并创建数据库
第3章 SQL与PL/SQL概述
3.1 SQL与PL/SQL简介
3.1.1 SQL简介
3.1.2 PL/SQL简介
3.2 SQL*Plus 简介
3.3 范例数据库表的建立
3.3.1 Oracle 10g基本数据类型
3.3.2 定义表的结构
3.3.3 查看表结构
3.3.4 删除表
3.3.5 添加数据
3.3.6 查看数据
3.3.7 删除数据
第II部分 SQL操作
第4章 单表查询
4.1 简单查询
4.1.1 查询指定列
4.1.2 改变输出
4.1.3 空值处理
4.2 条件查询
4.2.1 单一条件查询
4.2.2 复合条件查询
4.3 记录排序
4.3.1 按单一列排序
4.3.2 按多列排序
4.4 分组查询
4.4.1 列函数及其应用
4.4.2 GROUP BY子句
4.4.3 HAVING子句
第5章 子查询与集合操作
5.1 子查询
5.1.1 单行子查询
5.1.2 多行子查询
5.1.3 多列子查询
5.1.4 相关子查询
5.1.5 嵌套子查询
5.2 集合操作
5.2.1 使用集合操作符
5.2.2 集合操作的进一步讨论
第6章 连接查询
6.1 内连接查询
6.1.1 简单内连接
6.1.2 复杂内连接
6.2 外连接查询
6.2.1 左外连接
6.2.2 右外连接
6.2.3 全外连接
6.3 其他特殊连接
6.3.1 交叉连接
6.3.2 自连接
第7章 数据操纵语言与事务处理
7.1 数据操纵语言
7.1.1 插入数据(INSERT)
7.1.2 更新数据(UPDATE)
7.1.3 删除数据(DELETE、TRUNCATE TABLE)
7.1.4 数据库完整性
7.1.5 含有子查询的DML语句
7.2 数据事务处理
7.2.1 显式处理事务
7.2.2 隐式处理事务
7.2.3 特殊事务
第8章 SQL函数
8.1 数字函数
8.1.1 数字函数概述
8.1.2 数字函数示例
8.2 字符函数
8.2.1 字符函数概述
8.2.2 字符函数示例
8.3 日期时间函数
8.3.1 日期时间函数概述
8.3.2 日期时间函数示例
8.4 转换函数
8.4.1 转换函数概述
8.4.2 转换函数示例
第9章 数据控制语言与数据定义语言
9.1 数据控制语言
9.1.1 数据库权限
9.1.2 权限控制
9.2 表
9.2.1 建立表
9.2.2 获得表的相关信息
9.2.3 修改表定义
9.2.4 修改表名
9.2.5 删除表
9.3 索引
9.3.1 建立索引
9.3.2 获得索引信息
9.3.3 修改索引名字
9.3.4 删除索引
9.4 视图
9.4.1 建立视图
9.4.2 使用视图
9.4.3 获得视图定义信息
9.4.4 修改视图
9.4.5 删除视图
第III部分 PL/SQL编程指南
第10章 PL/SQL编程基础
10.1 PL/SQL语言基础
10.1.1 PL/SQL块简介
10.1.2 PL/SQL基本语法要素
10.1.3 变量及其数据类型
10.2 在PL/SQL中执行SQL语句
10.2.1 执行SELECT语句
10.2.2 执行DML语句
10.2.3 执行事务处理语句
10.3 PL/SQL程序控制结构
10.3.1 顺序结构
10.3.2 分支结构
10.3.3 循环结构
10.3.4 GOTO语句与NULL语句
10.4 异常处理
10.4.1 异常的基本概念
10.4.2 系统异常处理
10.4.3 自定义异常处理
10.4.4 使用异常函数
10.5 游标
10.5.1 游标应用基础
10.5.2 游标应用
10.5.3 游标FOR循环
10.5.4 游标的复杂应用
第11章 复合数据类型
11.1 记录类型
11.1.1 定义记录
11.1.2 在SELECT语句中使用记录
11.1.3 在DML中使用记录
11.2 记录表类型
11.2.1 定义记录表
11.2.2 使用记录表
11.3 联合数组类型
11.3.1 定义联合数组
11.3.2 使用联合数组
11.4 嵌套表类型
11.4.1 定义嵌套表
11.4.2 使用嵌套表
11.5 变长数组类型
11.5.1 定义变长数组
11.5.2 使用变长数组类型
11.6 集合操作
11.6.1 使用集合属性与方法
11.6.2 使用集合操作符
第12章 应用程序结构
12.1 子程序
12.1.1 过程
12.1.2 函数
12.2 包
12.2.1 定义包
12.2.2 包的管理
12.2.3 调用包
12.2.4 包中子程序的重载
12.3 触发器
12.3.1 概述
12.3.2 DML触发器
12.3.3 INSTEAD OF触发器
12.3.4 系统事件触发器
附录 SQL*Plus常用命令
精彩书摘
第1章 Oracle简介
Oracle公司是目前世界第二大独立软件公司和世界领先的信息管理软件供应商。0racle数据库是著名的关系数据库产品,其市场占有率名列前茅。在介绍0racle公司及其数据库产品之前,先介绍数据库的产生与发展。
1.1 数据库的产生与发展
数据是人们对其活动的一种符号记录。数据管理是指人们对数据进行收集、组织、存储、加工、传播和利用的一系列活动的总和。随着社会的发展,数据量增大,数据的管理便成为人们日常生活的一种需求。在计算机产生以前,人们利用纸笔来记录数据,利用常规的计算工具来进行数据计算,并主要是利用大脑来管理这些数据。研制计算机的最初目的是利用它进行数值计算,但随着计算技术的进步与发展,计算机的应用已远远超出了数值计算的范围。在计算机硬件、软件发展的基础上,在应用需求的推动下,人们借助计算机进行大规模的数据管理,使数据管理技术得到迅速发展。
1.1.1 数据管理技术的产生与发展
1946年,第一台电子计算机问世。问世后的前十年,主要用于解决数值计算问题。到20世纪50年代后期,计算机开始应用于事务管理,用来解决非数值计算问题,如人事管理、工资管理、库存管理、辅助教学等。20世纪70年代以后,计算机一方面朝着高速(数亿次/秒)、大容量和智能化的巨型计算机方向发展,另一方面又朝着品种繁多、功能不断增强的微型计算机系统方向发展。
随着科学技术的发展,计算机技术作为信息管理的先进技术,其优越性越来越明显。计算机能存储大量数据并能长期保存,这是任何其他工具所无法比拟的,它处理数据的速度快,能够及时地为人们提供大量他们所关心的信息。
前言/序言
Oracle公司是世界排名前列的大型国际企业。Oracle数据库是世界领先、性能优异的大型数据库管理系统之一。Oracle数据库系统广泛应用在金融、通信、航空等领域。有多种数据库管理系统可供用户选择,Oracle数据库系统以其处理的并发数据量极大,极高的可靠性、安全性和可扩展性赢得了广大高端用户的青睐。早期Oracle数据库主要应用于UNIX操作系统,随着Oracle公司提供了基于Windows平台的Oracle版本以后,Oracle数据库系统在国内外拥有了更为广泛的应用市场。
《Oracle 10g SQL与PL/SQL编程指南》是一本专注于Oracle数据库核心编程技术的权威参考书籍。本书深入浅出地阐述了SQL(Structured Query Language)和PL/SQL(Procedural Language/SQL)在Oracle 10g环境下的应用,旨在帮助开发者、数据库管理员以及任何希望精通Oracle数据库编程的专业人士,掌握高效、 robust 的数据库解决方案。 本书内容紧密围绕Oracle 10g这一经典版本,虽然Oracle已迭代多个版本,但10g在许多企业级应用中仍占有重要地位,其SQL和PL/SQL的内核特性在后续版本中也得以继承和发展。因此,理解10g的精髓,对于建立坚实的Oracle数据库编程基础至关重要。 SQL部分:数据的基石 SQL是与关系型数据库进行交互的标准语言,也是本书的基石。在SQL部分,我们将首先从SQL的基础语法开始,涵盖数据查询(SELECT)、数据操纵(INSERT, UPDATE, DELETE)以及数据定义(CREATE, ALTER, DROP)等核心命令。但本书绝不仅仅止步于此,而是将重点放在如何在Oracle 10g环境中实现更复杂、更高效的数据处理。 高级查询技巧: 我们将深入探讨各种复杂的查询技术,包括但不限于: 子查询(Subqueries): 详细讲解内嵌查询、相关子查询、关联子查询以及它们的性能优化策略。演示如何在WHERE子句、SELECT列表、FROM子句以及HAVING子句中使用子查询,解决实际问题。 连接(Joins): 全面覆盖内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)、全外连接(FULL OUTER JOIN)以及交叉连接(CROSS JOIN)。通过大量实例,展示如何根据业务需求选择最合适的连接方式,并分析不同连接的性能差异。 集合运算符(Set Operators): 深入理解UNION, UNION ALL, INTERSECT, MINUS等运算符在合并、比较和筛选数据集中的作用,并讨论其适用场景和性能考量。 分组与聚合(Grouping and Aggregation): 详细讲解GROUP BY子句和HAVING子句的使用,以及常用的聚合函数(SUM, AVG, COUNT, MAX, MIN)。重点在于如何对分组后的数据进行二次过滤和分析。 窗口函数(Analytic Functions): 这是Oracle SQL的一大亮点,本书将投入大量篇幅介绍窗口函数的强大功能,如ROW_NUMBER(), RANK(), DENSE_RANK(), LEAD(), LAG(), NTILE(), PERCENT_RANK(), CUME_DIST(), FIRST_VALUE(), LAST_VALUE()等。通过丰富的案例,展示如何利用窗口函数进行排名、累计求和、同比/环比分析、分组内首尾值获取等复杂报表和分析需求,避免了传统的复杂自连接和游标操作,极大地提高了效率和代码简洁性。 正则表达式(Regular Expressions): 介绍Oracle 10g中强大的正则表达式函数,如REGEXP_LIKE, REGEXP_SUBSTR, REGEXP_REPLACE, REGEXP_INSTR等,帮助读者处理和匹配复杂的字符串模式。 层次查询(Hierarchical Queries): 专注于Oracle特有的CONNECT BY PRIOR子句,演示如何处理树状结构(如组织架构、物料清单)的数据,并进行各种层级相关的查询。 数据字典视图: 讲解如何利用Oracle数据字典(如DBA_TABLES, ALL_TAB_COLUMNS, V$SESSION等)来查询数据库的元数据信息,这对于数据库的监控、管理和开发调试至关重要。 SQL性能优化: 性能是数据库应用的核心。本书将系统地介绍SQL性能优化的方法和工具: 执行计划(Execution Plans): 详细解读SQLPlus和SQL Developer中如何获取执行计划,并分析执行计划中的关键信息,如访问路径、连接方式、成本估算等。 索引(Indexes): 全面讲解各种索引类型(B-tree, Bitmap, Function-based, Composite等)的原理、创建和使用时机。重点在于如何根据查询模式选择和设计合适的索引,避免全表扫描。 统计信息(Statistics): 阐述收集和维护数据库统计信息的重要性,以及它们如何影响优化器的决策。讲解DBMS_STATS包的使用。 SQL调优技巧: 提供实际的SQL重写、避免低效写法(如函数在WHERE条件中使用)等调优经验。 PL/SQL部分:过程化控制与业务逻辑的实现 PL/SQL是Oracle特有的过程化扩展语言,它将SQL的强大数据处理能力与过程化编程的灵活性相结合,是实现复杂业务逻辑、自动化任务和构建可维护数据库应用程序的利器。 PL/SQL基础: 从PL/SQL的基本语法结构开始,包括声明部分、执行部分和异常处理部分。讲解变量、常量、数据类型、运算符、顺序结构、选择结构(IF-THEN-ELSIF-ELSE, CASE)以及循环结构(LOOP, WHILE LOOP, FOR LOOP)。 过程与函数(Procedures and Functions): 深入讲解如何创建、调用和管理存储过程和函数。重点在于参数传递模式(IN, OUT, IN OUT),返回值,以及它们在封装业务逻辑、提高代码重用性方面的作用。 包(Packages): 介绍PL/SQL包的概念,如何将相关的过程、函数、变量和类型组织在一起,实现模块化开发,并讨论包的优点,如封装性、性能提升(硬解析减少)和版本控制。 游标(Cursors): 详细讲解显式游标和隐式游标的使用。重点在于如何处理多行查询结果,如何进行逐行处理,并讨论游标的性能影响和优化方法(如FOR循环代替显式游标, BULK COLLECT)。 异常处理(Exception Handling): 强调PL/SQL强大的异常处理机制,包括预定义异常、用户自定义异常以及如何使用EXCEPTION块来捕获和处理运行时错误,保证程序的健壮性。 触发器(Triggers): 深入讲解各种类型的触发器(ROW, STATEMENT, BEFORE, AFTER, INSTEAD OF)及其应用场景。重点在于如何在数据修改、数据库事件发生时自动执行PL/SQL代码,如数据校验、审计、同步数据等。 记录类型(RECORD Types)与集合类型(Collection Types): 讲解如何定义和使用PL/SQL的复合数据类型,如记录类型(类似于结构体)和集合类型(VARRAY, Nested Tables, Associative Arrays),它们能极大地简化复杂数据的处理。 高级PL/SQL特性: Autonomous Transactions(自治事务): 解释自治事务的概念,如何利用PRAGMA AUTONOMOUS_TRANSACTION实现独立的事务,例如在日志记录或审计中。 BULK COLLECT 和 FORALL: 详细讲解这些优化技术,它们能够显著提高处理大量数据集时PL/SQL的性能,通过减少上下文切换来大幅提升效率。 SQL/XML 和 SQL/JSON: 介绍Oracle 10g对XML和JSON数据的支持,以及如何使用PL/SQL与这些半结构化数据进行交互。 DBMS_OUTPUT 和 DBMS_DEBUG: 讲解如何使用这些内置包进行程序调试和输出信息。 PL/SQL性能优化: 避免显式游标: 强调在可能的情况下使用BULK COLLECT和FORALL来替代显式游标处理。 减少上下文切换: 讲解如何通过FORALL一次性执行多条SQL语句。 优化SQL语句: PL/SQL中的SQL语句同样需要优化,本书将重申SQL优化的重要性。 合理的错误处理: 确保异常处理机制能够有效捕获和报告错误,避免程序意外终止。 综合应用与实践 除了对SQL和PL/SQL的深入讲解,本书还强调理论与实践的结合。通过大量的实际案例,涵盖从简单的数据查询到复杂的业务流程实现,让读者能够将所学知识应用于实际工作。 案例分析: 包含从常见业务场景出发的实际案例,例如: 构建复杂的报表系统(如月度销售统计、库存预警)。 实现数据迁移和同步方案。 开发自定义的数据库校验和验证规则。 设计和实现批处理作业。 构建基于触发器的审计和日志记录系统。 开发工具: 可能会提及Oracle SQL Developer等常用开发工具的使用技巧,辅助读者更高效地进行开发和调试。 最佳实践: 总结在SQL和PL/SQL开发中的一些最佳实践和注意事项,帮助读者写出更清晰、更易于维护、性能更优的代码。 通过阅读《Oracle 10g SQL与PL/SQL编程指南》,读者将能够全面掌握Oracle数据库编程的核心技能,能够独立解决复杂的数据库查询和处理问题,开发出高效、稳定、可维护的数据库应用程序,并在Oracle 10g环境下游刃有余地进行开发和管理。本书是Oracle数据库开发人员、DBA以及希望深入理解Oracle数据库技术的专业人士不可多得的参考资料。