前 言
SQL(Structured Query Language)是标准的关系数据库(Relational Database Management Systems)操作语言。它是一种非过程化的第4代高级语言,其语法与英语非常相似,因此,也是一种比较容易学习的计算机语言。SQL操作语言对初学者几乎没有任何要求,换句话说,初学者可以不具备任何计算机经验。
Oracle是一个适合于大中型企业的数据库管理系统,其市场占有率是所有的数据库管理系统中最高的,它主要的用户为银行、电信、移动通信、航空、保险、金融、跨国公司和电子商务等。根据WTO的有关协议,我国在以上领域要逐年开放市场,因此,随着这些领域外资的大量涌入,在不远的将来对Oracle数据库管理员和开发人员的需求将急剧增加。
Oracle SQL是Oracle数据库管理系统上的SQL语言,无论是Oracle数据库管理员(DBA)、开发人员(Developer)还是一般用户,熟练地使用Oracle SQL都是最基本的要求。OCP(Oracle Certified Professional)认证考试也将Oracle SQL作为Oracle数据库管理员(DBA)和开发人员(Developer)的第一门必考课程。
Oracle SQL是美国国家标准化委员会(American National Standards Institute,ANSI)和国际标准化组织(International Standards Organization,ISO)颁布的SQL标准的超集。也就是说,如果读者学会了Oracle SQL,就能很容易地掌握其他数据库管理系统上的SQL语言。
目前国内已出版的Oracle教材以翻译书为主,许多是针对OCP考试的,其内容的编排多是以总复习的形式出现的。这些教材应付OCP考试有用,但不完全适合作为培训教材,更不适于自学。Oracle Student Guide (英文)虽然是一套很好的培训教材,但这套书是不外卖的,只有参加Oracle公司的培训才能得到,而它的培训费之高一般人很难负担得起。
Oracle Student Guide 的另一问题是:它的练习题对系统资源要求很高,例如,它要求学生创建的表或表空间常常以百兆字节为单位,另外,它的许多练习题必须使用Oracle提供的脚本文件才能运行。也就是说,如果不参加Oracle公司的培训,学生是很难实现许多练习题的。
这本书是源于我在新西兰GZ Comtech(NZ)LTD(现为:New Zealand Institute of Science and Technology Ltd——新西兰科学技术学院)从事Oracle数据库管理员(DBA)培训课程时的讲稿和为学生编写的上机题。当时为了使学生能有足够的上机练习机会,我几乎为每一讲都设计了大量的上机练习题,为了使学生能在家里练习这些上机题,每一道题都进行了精心的设计,使其对系统的资源消耗都限制在一般PC允许的范围(当时PC的一般硬件配置为:CPU 300 MHz左右,内存64MB,硬盘8GB左右),而且这些上机题完全是自封闭的,即学生不需要任何CD,不需要运行任何脚本文件,除Oracle系统外也不需要安装任何其他的软件。
之后,这些讲稿和上机练习题曾在多个培训机构的多种Oracle培训课程上使用。其中包括中国计算机软件与技术服务总公司培训中心(北京)、昆仑瑞通高级技术培训中心(北京)、中国UNIX协会和Oracle大学(Etake Technology Inc)等。部分讲稿也在新西兰的Unitec Institute of Technology - 新西兰奥克兰技术学院(公立)为大学本科生讲授数据库概论时使用过多次。同时也从学生和同事们那里得到了大量有益的反馈。许多学生本身就是工作在电信、移动通信和航空等大型企业的数据库管理员或数据库开发人员,他们提出了很多在工作中遇到的实际问题,这些实际问题及其解决方案后来也都加到了讲稿或上机题中。一些我做信息系统管理员、分析员和IT顾问时所遇到的实际问题和解决方案也逐步地加到了该讲稿或上机题中。
考虑到参加培训的许多学生正在工作,而且一些学生基本上没有计算机背景,他们或者是没时间或者是没能力来理解难懂而乏味的学术术语,本书使用生动而简单的生活中的例子来解释复杂的计算机和数据库概念,而避免用计算机的例子。所以本书对学生的计算机专业知识几乎是没有任何要求。对以前培训的学生的跟踪表明这样的设计是合理的。
书中许多概念和例题都给出了商业应用背景,许多例题是用场景或故事的形式出现的。不少例题和它们的解决方案是企业中的数据库管理员或数据库开发人员在实际工作中经常遇到或可能遇到的,因此很多例题可以不加修改或略加修改后应用于实际工作中。
本书的内容和例题设计由浅入深,为了消除初学者对计算机教材常有的畏惧感,本书把那些难懂而且又不常用的内容尽量放在书的后面章节或附录中,并去掉了个别非常难懂而且一般的Oracle工作人员都很少听到的内容。根据我多年的IT工作和教学经验,一个人在某个系统中所使用的功能是很少的,相信还不到一半。因为绝大多数难懂的操作可以通过其他操作的组合来实现,因此,没有必要为了解释清楚5%非常难懂的内容而吓跑了95%的读者。
本书是一本Oracle SQL的实用教材。虽然它覆盖了OCP这部分考试的几乎全部内容,但重点放在实际工作能力的训练。该书全面而详细地介绍了关系数据库(Relational Database Management Systems)的标准操作语言和SQL(Structured Query Language)语言,它包括数据查询语言、DML(数据操作语言)、DDL(数据定义语言)、DCL(数据控制语言)和事务处理。该书也详细地介绍了常用的SQL函数及Oracle 8i和Oracle 9i所提供的一些高级功能。
在刚开始写这本书时,我曾经想为读者构造一个小型的订单系统,并以光盘的形式随书赠送给读者。但是经过仔细权衡利弊之后终于打消了这个念头。因为如果这样做的话,就要求读者在开始做练习之前先学会安装光盘的内容,这样势必会增加读者开始学习的难度。考虑到不少读者可能是初学者这一事实,最后还是决定在开始时使用Oracle系统自带的几个表,随着学习的深入,再教读者自己构造一些所需要的表和其他的对象。
学习这门课的许多人可能是第一次接触Oracle,对如何设置Oracle环境一无所知,所以在计算机上配置Oracle的运行环境的操作越简单越好,这正是本书为什么选用在Windows环境下运行Oracle数据库管理系统的主要原因。
选用Windows作为学习环境的另一个原因是学习的成本。因为Windows是一个相对便宜的操作系统,而且它很容易得到。绝大多数人对这一操作系统都有所了解,因此在学习Oracle之前不需要再学习操作系统。
Oracle数据库管理系统是独立于任何IT平台的,所以当在一个操作系统上学会了Oracle的SQL语言的使用之后,就可以在任何操作系统上使用它了。也可以把SQL语句或脚本文件几乎不做任何修改地从一个操作系统移植到另一个操作系统上。另外,尽管许多大型的Oracle数据库系统的服务器是安装在UNIX或其他操作系统上,但是用户的前台终端还是使用Windows操作系统。
本书的每一章中都配有大量的例题。从我的工作和教学实践中得来的经验表明:自己上机做练习是一种很好的学习方法,这样做往往比只看书效果好。数据库是一门实践性很强的课程,只有通过大量的上机操作实践(练习)才能悟出SQL语言的真谛,水平才能上到一个新的层次。正像毛主席说的“要在游泳中学会游泳”。如果不跳到水中就永远学不会游泳,如果不坐在计算机前真正地操作Oracle数据库系统,是很难真的学会使用Oracle数据库系统的,因此建议读者如果有条件最好把本书中的例题在自己的计算机上重做一遍或多遍。
本书中几乎每一道例题都给出了显示结果,其目的有两个,第一,当读者重做例题后,这个显示结果可以帮助读者检查所做的是否正确;第二,如果读者根本就没有能力买一台计算机,则这些显示结果可以帮助读者更好地理解书中的内容。
当阅读本书时,会发现书中没有指定的练习题,这是因为每一章有很多例题的缘故。读者只要把这些例题重做1~2遍也就达到了练习的目的。另外,本书在每章的结尾处并未给出思考题,而使用了“您应该掌握的内容”这样的方式,之所以没有使用思考题这个词是为了避免束缚读者的想象力。使用“您应该掌握的内容”这样比较宽松的句子的好处是:当思考所列出的内容时,只要已经理解了它们就可以了,至于如何解释和回答它们已经变得不重要了。
在我的教学实践中经常遇到这样的情况:有的学生看到书中的讨论或解释时就觉得很吃力,有时甚至想睡觉,但是上机做练习时他们马上就精神起来,而且做得还挺好。如果这种情况有时也适合您的话,请不用担心,只要能理解书中所介绍的内容就达到了目的,至于是通过上机做练习还是通过阅读书中的解释学会的并不重要。还是那句话“不管白猫黑猫,抓住老鼠就是好猫”。科学已经证明,文字作为一种交流的工具,它的承载能力要比声音和图像小,这可能也是为什么提倡多媒体教学的原因之一。所以当您看书时,有些内容看一遍看不懂是很正常的。
如果真的有一段内容看了几遍都不能完全理解,也用不着害怕,可以先把这段内容跳过,继续下面的学习。因为本书的编排不是严格的一环扣一环的。等看完了几章之后,回过头来再看这段内容可能就比较容易理解了。
书作为一种古老的单向交流工具,它的承载能力是很有限的,因此产生二义性几乎是不可避免的。为了减少二义性的产生,我曾把本书中许多章的初稿分别发给了多个培训机构的学生们,并根据他们阅读后反馈回来的意见对相关的章节做了相应的修改,其中,有些章节几乎是全部重写。尽管做了这些努力,但也很难保证该书像武侠小说或爱情小说那样容易理解,因为它毕竟不是一本消遣的书。
记得我在做硕士论文时,我的导师一再嘱咐在论文中要避免使用第一人称(我)和第二人称(您),要尽量避免口语化,最好使用被动语态。我在写论文时确实是那样做的。不是我喜欢,因为不那样做可能就毕不了业。
但是这本书却使用了不少口语,因为这本书的读者不少是初学者而不是专家。使用口语的目的主要是为了减少初学者学习的难度。本书在解释SQL语句或概念时没有追求学术上的完美,而只是给出了实用的解释。在本书中甚至没有使用语法这个词。
在本书中有不少虚构的故事,在这些故事中使用了不少夸张性的语言,其目的只是增加读者的兴趣。因为我深知看有用的书时多数人都很容易产生睡意,使用这些夸张性的语言可能会使读者在阅读时不至于睡着。
本书中使用的“您”并不是指读者。这样的写法是想让读者在阅读此书时尽量地投入进去。读者可以把书中所讲的故事看成一出戏,而您正是这出戏中的一个主角。这样或许对您理解书中所介绍的内容会有所帮助。书中常提到的“您的老板”、“您的经理”和“您的上司”等都不是现实中的人。相信现实中的他们可能都是大好人、大善人、灰衣天使、黑衣天使……
许多人认为学习IT,特别是学习Oracle数据库管理系统是既枯燥又令人生畏的。一些人下了决心去学Oracle,他们可能用几个月的时间拼命地学完了Oracle公司所要求的课程并通过了考试,在这一段时间里没有什么娱乐。等拿到证书后就把所有的书都丢到一边,痛痛快快地放松一下一直绷紧的神经。
希望这本书的写法能在枯燥的Oracle学习与娱乐之间达到某种程度的平衡,从而不至于使读者在整个学习过程中神经一直绷得很紧。
参加应试培训可能出现的另一个问题是:有些学生拿到了证书之后还不能进行熟练的上机操作。有的培训中心的课程基本上只进行应试培训,只教学生如何做考题,这样学生的动手能力就比较差,在应聘或面对实际工作时就将处在一种不利的境地,因为没有哪个公司愿意请一个只会说而不会干的人。最后检验学生能力的还是市场而不是考场。
这本书对以上的这些人会有很大的帮助,因为这本书的重点是放在了能力的培养,即教您怎样干活。一个既会说又会干的人一定是市场上最需要的人才。
本书既可作为企业或培训机构的Oracle SQL课程的培训教材,也可作为自学教材。
编写这本书的目的有如下3个:
? 把那些没有计算机或Oracle背景但想加入IT产业的人带入Oracle这个就业市场中来。
? 为那些有计算机或Oracle经验但没受过Oracle正规培训的人提供一套系统而完整的Oracle培训教材。
? 为那些非计算机人员,如管理或行政人员,了解和使用Oracle提供一套完整易学的培训教材。
本书中的绝大多数例题都分别在Oracle的8.0.4、8.0.5、8.1.5和8.1.7等版本上测试过,所有的例题都在Oracle的9.0.1版本上测试过,所以对您所使用的Oracle版本几乎没什么要求。
参与本书编写和资料整理的有王莹、万妍、王逸舟、牛晨、王威、程玉萍、万群柱、王静、范萍英、范秀英、汪超英、汪洁英、汪莉、黄力克、万洪英、万节柱、万如更、李菊、万民柱、万晓轩、赵京、张民生和杜蘅等,在此对他们辛勤和出色的工作表示衷心的感谢。
如果读者对本书有任何意见或要求,欢迎来信提出。我的电子邮箱为sql_minghe@yahoo. com.cn。最后,预祝读者的Oracle SQL学习之旅轻松而愉快!
编 者