内容简介 
本书全面深入地论述了如何使用结构化查询语言(SQL)语句来访问Oracle数据库,以及使用PL/SQL(Procedural Language/SQL)来编写包含SQL语句的程序。本书由Oracle前产品经理Jason Price亲笔撰写,基于新推出的SQL 2003规范,详细介绍了Oracle Database 10g的新特性和功能。全书内容系统、权威,能帮助读者快速掌握SQL的核心知识。
前 言 现在的数据库管理系统实现了一种标准语言:结构化查询语言(Structured Query Language),或简称SQL。除了具有其他语言的特点之外,SQL还可以对数据库中的信息进行检索、添加、修改和删除。SQL是经过美国国家标准化组织(ANSI)认可的一种标准语言,可以用来对Oracle、SQL Server、DB2或MySQL数据库进行访问。本书将介绍如何真正掌握SQL,同时还会给出许多实际的例子。读者也可以通过Internet获得本书中所使用的所有脚本和程序(详细信息参看后文“获得本书例子”部分)。 读者通过本书可学会: ● 掌握标准的SQL,以及Oracle公司为了使用Oracle数据库的特性而开发的一些扩展。 ● 展示PL/SQL(过程化语言/SQL),它构建在SQL基础之上,允许用户编写包含SQL语句的程序。 ● 使用SQL*Plus执行SQL语句、脚本和报表;SQL*Plus就是一个与数据库进行交互的工具。 ● 对数据库执行查询、插入、修改和删除操作。 ● 创建数据库表、序列、索引、视图和用户。 ● 执行包含多条SQL语句的事务。 ● 定义数据库对象类型,并创建对象表来处理高级数据。 ● 使用大对象来存储128TB的字符和二进制数据,以及指向外部文件的指针。 ● 使用分析函数执行复杂计算。 ● 使用所有最新的Oracle10g特性,例如BINARY_FLOAT和BINARY_DOUBLE类型、MODEL子句以及大对象和集合的扩展。 ● 介绍数据库的安全性。 ● 实现高性能的优化技术,使SQL语句可以快速执行。 ● 介绍使用Java通过JDBC运行SQL的基础知识。 本书共包含16章和一个附录。 第1章 简介 本章将介绍有关关系数据库和SQL的知识,然后给出几个简单查询,并使用SQL*Plus执行这些查询,最后简要介绍PL/SQL。 第2章 从数据库表中检索信息 本章将展示如何使用SELECT语句从一个或多个数据库表中检索信息,如何使用算术表达式执行计算,如何使用WHERE子句对行进行过滤,以及如何对从表中检索出的行进行排序。 第3章 使用简单函数 本章将介绍有关Oracle数据库中内置函数的知识。函数可以接受零个或多个输入参数,并返回一个输出参数。使用函数可以实现很多功能,例如计算一组数字的平均值和方根。 第4章 日期和时间的存储与处理 本章将介绍Oracle数据库如何处理和存储日期和时间,二者合称时间值。本章还将介绍如何使用时间戳来存储特定的日期和时间,如何使用时间间隔来存储一段时间的长度。 第5章 使用SQL*Plus 本章将使用SQL*Plus来查看表的结构,编辑SQL语句,保存并运行脚本,设置列的输出格式,定义并使用变量,以及创建报表。 第6章 子查询 本章将介绍如何在一个外部的SQL语句中使用SELECT语句。内部的SELECT语句称为子查询。本节将介绍子查询的各种类型,以及如何使用子查询从简单部件构建复杂语句。 第7章 高级查询 本章将介绍如何执行包含高级操作符和函数的查询,例如,集合操作符可以合并多个查询返回的记录,TRANSLATE() 函数可以将一个字符串中的字符转换为另外一个字符串中的字符,DECODE() 函数可以在一组值中搜索特定的值,CASE表达式可以执行if-then-else逻辑,ROLLUP和CUBE子句可以返回包含小计的记录。本章还将介绍有关分析函数的知识,分析函数可以用来执行复杂计算,例如查找每个月销量最高的产品类型、业绩最佳的销售员,等等。本章还将介绍如何对层次化组织的数据进行查询。最后,本章将展示如何使用Oracle 10g的新特性MODEL子句执行记录间的计算。 第8章 修改表的内容 本章将介绍如何使用INSERT、UPDATE和DELETE语句添加、修改和删除记录,如何使用COMMIT语句使事务的处理结果永久生效,或者使用ROLLBACK语句完全取消事务结果的影响。本章还将介绍Oracle数据库如何同时处理多个事务。 第9章 数据库安全性 本章将介绍有关数据库用户的知识和如何使用特权来控制用户可以在数据库中执行的特定任务。 第10章 创建表、序列、索引和视图 本章将介绍有关表、序列和索引的知识,序列会生成一系列数字,而索引就如同书籍的索引,可以帮助读者快速访问记录。本章还将介绍有关视图的知识,视图是对一个或多个表预定义的查询。除了其他优点之外,视图还可以对用户屏蔽复杂性,通过只允许视图访问表中有限的数据集,从而实现另外一层安全性。 第11章 PL/SQL 编程简介 本章将介绍有关PL/SQL的知识,PL/SQL构建在SQL基础之上,使用PL/SQL可以在数据库中编写包含SQL语句的存储过程。PL/SQL是第三代语言,其中包含标准的编程结构。 第12章 数据库对象 本章将介绍如何创建数据库对象类型,数据库对象类型可以包括属性和方法;还将介绍如何使用对象类型来定义列对象和对象表,以及如何使用SQL和PL/SQL来操纵对象。 第13章 集合 本章将介绍如何创建集合类型,集合可以包含多个元素;还将介绍如何使用集合类型来定义表中的列,如何使用SQL和PL/SQL来操纵集合。 第14章 大对象 本章将介绍有关大对象(large object)的知识,大对象可以用来存储多达128TB的字符和二进制数据,或指向外部文件的指针;此外,还将介绍有关早期的LONG类型的知识,为了保持向后兼容性,在Oracle10g中依然支持LONG类型。 第15章 使用Java运行SQL 本章将介绍使用Java通过JDBC应用程序编程接口运行SQL的知识,Java程序可以使用JDBC访问数据库。 第16章 SQL优化 本章是本书的最后一章,将介绍SQL优化的一些技巧,这些技巧可以用来缩短查询执行的时间;本章还将介绍有关Oralce优化器的知识,如何向优化器传递一些提示。 附录A Oracle的数据类型 附录中列出了Oracle SQL和PL/SQL中可以使用的数据类型。 读者对象 本书适用于以下读者: ● 需要编写SQL和PL/SQL的开发人员。 ● 需要深入了解SQL的数据库管理员。 ● 需要编写SQL查询来从自己公司的数据库中获得信息的商业用户。 ● 需要简单了解SQL和PL/SQL的技术主管和技术顾问。 读者阅读本书,不需要预先已经了解Oracle数据库、SQL或PL/SQL的知识:通过阅读本书,读者将会找到成为这方面的专家需要了解的所有知识。 获得本书例子 本书中使用的所有的SQL脚本、程序以及其他文件都可以从Oracle出版社的网站上下载;这些文件都被打包成一个zip文件。下载这个zip文件之后,可以使用WinZip打开这个压缩文件,并在Actions菜单中选择Extract选项将其解压。这样就会创建一个目录sql_book,其中包含以下3个子目录: ● SQL 其中包含了本书中使用的SQL脚本,包括创建和填充示例数据库表所使用的脚本。 ● sample_files 包含了第14章中的示例文件。 ● Java 包含了第15章中使用的Java程序。 尽情享受吧,希望您喜欢本书! 致 谢 非常感谢McGraw-Hill/Osborne的朋友,包括Lisa McClain、Athena Honore和Lisa Wolters-Broder;感谢Ron Hardman的全面技术审核,感谢Oracle公司的Geoff Lee阅读本书并充当Oracle方面的倡导者。