语句数据库管理系统

数据库管理系统  时间:2021-04-22  阅读:()
OCAOracleDatabaseSQL认证考试指南(1Z0-071)[美]史蒂夫·奥赫恩(SteveO'Hearn)著焦婵译北京SteveO'HearnOCAOracleDatabaseSQLExamGuide(Exam1Z0-071)EISBN:978-1-259-58549-4Copyright2017byMcGraw-HillEducation.
AllRightsreserved.
Nopartofthispublicationmaybereproducedortransmittedinanyformorbyanymeans,electronicormechanical,includingwithoutlimitationphotocopying,recording,taping,oranydatabase,informationorretrievalsystem,withoutthepriorwrittenpermissionofthepublisher.
ThisauthorizedChinesetranslationeditionisjointlypublishedbyMcGraw-HillEducationandTsinghuaUniversityPressLimited.
ThiseditionisauthorizedforsaleinthePeople'sRepublicofChinaonly,excludingHongKong,MacaoSARandTaiwan.
Translationcopyright2019byMcGraw-HillEducationandTsinghuaUniversityPressLimited.
版权所有.
未经出版人事先书面许可,对本出版物的任何部分不得以任何方式或途径复制或传播,包括但不限于复印、录制、录音,或通过任何数据库、信息或可检索的系统.
本授权中文简体字翻译版由麦格劳-希尔(亚洲)教育出版公司和清华大学出版社有限公司合作出版.
此版本经授权仅限在中国大陆区域销售,不能销往中国香港、澳门特别行政区和中国台湾地区.
版权2019由麦格劳-希尔(亚洲)教育出版公司与清华大学出版社有限公司所有.
北京市版权局著作权合同登记号图字:01-2017-8967本书封面贴有McGraw-HillEducation公司防伪标签,无标签者不得销售.
版权所有,侵权必究.
侵权举报电话:010-6278298913701121933图书在版编目(CIP)数据OCAOracleDatabaseSQL认证考试指南:1Z0-071/(美)史蒂夫·奥赫恩(SteveO'Hearn)著,焦婵译.
—北京:清华大学出版社,2019书名原文:OCAOracleDatabaseSQLExamGuide(Exam1Z0-071)ISBN978-7-302-52981-1Ⅰ.
①O…Ⅱ.
①史…②焦…Ⅲ.
①关系数据库系统-资格考试-自学参考资料Ⅳ.
①TP311.
138中国版本图书馆CIP数据核字(2019)第093998号责任编辑:王军封面设计:孔祥峰版式设计:思创景点责任校对:牛艳敏责任印制:沈露出版发行:清华大学出版社网址:http://www.
tup.
com.
cn,http://www.
wqbook.
com地址:北京清华大学学研大厦A座邮编:100084社总机:010-62770175邮购:010-62786544投稿与读者服务:010-62776969,c-service@tup.
tsinghua.
edu.
cn质量反馈:010-62772015,zhiliang@tup.
tsinghua.
edu.
cn印装者:三河市铭诚印务有限公司经销:全国新华书店开本:185mm*260mm印张:26.
5字数:713千字版次:2019年7月第1版印次:2019年7月第1次印刷定价:98.
00元产品编号:081805-01译者序所有行业和政府的核心架构、自动化系统的骨干以及几乎所有大型组织都一直依赖于RDBMS技术,RDBMS是应用程序的灵魂.
而OracleRDBMS是数据库领域的翘楚,是目前全球最流行的产品之一,可移植性高、使用方便、功能卓越.
SQL是所有关系数据库模型共用的唯一语言.
Oracle产品的基础核心语言是OracleSQL,OracleSQL提供了简单、优秀、高性能的架构来访问、定义和维护数据.
Oracle认证证书的含金量非常高.
人才市场对拥有OracleOCA和OracleOCP证书的计算机专业人员的需求量越来越大.
薪水调查显示,通过Oracle认证的IT从业人员能获得比通过Microsoft、Novell和Cisco等其他认证的IT从业人员更高的薪水.
本书旨在帮助你获得OracleSQL认证.
本书是OraclePress针对OracleDatabaseSQL考试提供的独家权威指南,涵盖OracleDatabaseSQLExam(1Z0-071)的所有目标,助你获得OracleCertifiedAssociate认证.
本书作者是一位有才华、执着和专注的专业人员.
本书是他辛勤汗水和经验的结晶,其创作过程十分艰辛,并被全世界具有各种背景和实力的富有经验的Oracle专业人员所检验.
本书包括完整的描述、语法细节、示例代码、自测题以及模拟考题,呈现专家建议、成熟策略,避免读者走弯路,是通过考试和获得认证所需智慧的藏宝图.
每章的"认证目标""考试要点"和"实践要点"的针对性极强,字字珠玑.
每章都重点介绍考试中的一个主要方面,OCAOracleDatabaseSQL认证考试指南(1Z0-071)II涵盖DDL和SQLSELECT语句、对数据进行操纵、限制和排序、单行函数和分组函数、子查询、模式对象、集合操作符、创建报表、数据字典视图、大数据集、分层检索、正则表达式支持、用户访问控制等主题.
通过阅读本书,你将熟悉1Z0-071考试测试的技术和知识体系.
章末练习可帮助你进一步掌握基本技能和概念,测试知识掌握情况,增强考试能力.
本书既可作为助你通过OCA认证考试的利器,也可作为日常工作中必备的参考书,使你得心应手地履行本职工作,在当今竞争激烈的IT领域取得成功.
如果你想获得认证,并晋升到更高级别,本书将是你的理想之选.
本书配套资料包括140多道模拟考题以及完全可定制的测试引擎,可衡量你的学习进展状况,帮助你更明智、更快捷地准备考试.
本书涉及大量的实践和专业术语,虽然译者倾力而为,在翻译过程中力求准确生动,但毕竟水平有限,失误在所难免,如有任何意见和建议,请不吝指正!
译者作者简介SteveO'Hearn是一位资深技术顾问,在设计、开发和管理各种数据和数据驱动的系统方面拥有极丰富的经验,他的客户包括美国国防部、美国国家航空和宇航局总部、联邦航空局、世界银行等.
他于2001年成为Oracle认证专家(OracleCertifiedProfessional,OCP),目前是一位经过认证的OracleDatabaseSQLExpert.
他毕业于乔治华盛顿大学信息处理专业,获得工商管理学位,大学毕业后,于2003年在哈佛大学肯尼迪政府学院完成了下一代电子政府管理教育的培训.
他是MENSA(世界顶级智商俱乐部)的成员.
O'Hearn撰写了OCEOracleDatabaseSQLCertifiedExpertExamGuide(Exam1Z0-047)和备受好评的OCPDeveloper:PL/SQLProgramUnitsExamGuide(这两本书均由OraclePress出版),前者是Oracle第一门专家级认证考试的官方认证指南.
他还参与撰写OracleWebApplications101和Oracle8ServerUnleashed,推出OracleTV和OracleOpenWorld/JavaOne专题片.
他曾为HarvardBusinessReview和NationalPressClub的Record撰稿.
O'Hearn是NationalPressClub正式认可的数据库和信息技术主题专家,担任Mid-AtlanticAssociationofOracleProfessionals的副主席和会议协调人,是巴尔的摩华盛顿大都市区官方Java用户组(JavaUserGroup,JUG)的领导人.
他拥有Java和其他技术认证证书,喜欢摆弄自己的RaspberryPi和3D打印设备.
O'Hearn提供在线Oracle、Java技术培训及辅导,他的博客是Skere9.
com,联系方式为soh@corbinian.
com.
OCAOracleDatabaseSQL认证考试指南(1Z0-071)IV贡献者简介BobBryla是Oracle9i/10g/11g/12c认证的专业人员,具有超过20年的数据库设计、数据库应用程序开发、培训和Oracle数据库管理经验.
Bob是威斯康星州EpicinVerona的OracleDBA和数据库科学家.
他是许多OraclePress书籍的技术编辑,包括OracleDatabase10g/11g/12c的认证学习指南.
他在Lynda.
com上通过简短视频讲授Oracle数据库基本原理.
在业余时间,他喜欢看科幻电影、修理Android设备以及翻新古典家具.
技术编辑简介ToddMeister在IT领域的从业时间已超过20年.
他是75本SQLServer和.
NETFramework图书的技术编辑.
他也是美国印第安纳州曼西市鲍尔州立大学的副主席/首席企业架构师.
他与妻子Kimberly以及五个聪明可爱的孩子居住在印第安纳州中部.
序言在最近参加一个大型数据供应商举办的技术会议时,我与一位参展商谈论了他新成立的公司推出的NoSQL产品.
我个人喜欢所有形式的数据系统,认为每种数据系统都有用武之地,键-值对、动态模式都有用处.
但这位特定的供应商惊世骇俗地宣称关系数据库是无用的,"SQL已死".
他介绍他的系统如何收集文字评论,从数百万条记录中推测人们的情感,并支持各种智能化用例——顺便说一句,所有这些都可在基于Oracle的SQL系统中完成.
但他一口咬定Oracle关系数据库管理系统(RelationalDatabaseManagementSystem,RDBMS)是无关紧要的.
我问他:"假如我订购了你们的产品.
你打算在NoSQL数据库中跟踪这个订单吗或者你们的办公室依靠RDBMS来捕获订单"他迟疑了一下答道:"好,这是一个关系数据库系统.
""好,你的员工呢当公司跟踪员工的工作时长时,会使用什么""没错,没错,这也是一个SQL数据库.
""如何完成供应管理航运总分类账和其他会计职能、库存管理以及其他办公系统呢""好的,你了解我,那些也是RDBMS服务器,都使用SQL系统.
""所以说,任何涉及订单、客户、员工、供应商、合作伙伴、产品、库存、制造、工资单等业务的系统都是SQL系统.
"OCAOracleDatabaseSQL认证考试指南(1Z0-071)VI"没错,这是真的.
""如果我想在我的网站上分析评论,你们公司的产品是不错的选择.
""是的!
千真万确!
"谈到他十分熟悉的这个领域,他似乎松了口气:"而且我们每秒可分析数百万条评论.
""好吧,如果我的网站上每秒得到数百万条评论,我会感兴趣.
""是的.
Twitter网站就使用我们的产品.
""太棒了.
因此,如果我执行大规模文本分析,理论上我仍可使用Oracle产品,但如果是Twitter网站,由于你们的产品更适于完成大量'只插入'处理,所以用你们的产品效果更好.
""确实如此.
""一个问题.
这不是Twitter网站.
那么有多少个Twitter网站上次我查了一下,只有一个.
现在,我知道其他个别组织需要每秒处理数百万条记录.
FacebookGoogle这样的网站有两个、10个还是30个呢""嗯……也许不止这些.
"这个参展商也许是对的.
我们都知道,这个数字正在增长.
但这意味着Oracle公司会死亡吗此时,我决定使出杀手锏:"你的产品可能是用Java编写的,对吗""是的.
""你知道Oracle拥有Java吗"他看上去惶恐万分,愣在了那里.
我想说,我对大数据革命、物联网(IoT)、机器学习和其他所有技术的潜力同样感到兴奋.
我在大数据系统和新颖的数据建模领域工作.
我喜欢了解最前沿的技术发展.
但最终,所有行业和政府的核心架构、自动化系统的骨干以及几乎所有大型组织都一直依赖于RDBMS技术,而OracleRDBMS是数据库领域的翘楚.
最近我还在一个备受瞩目的Java会议上参加了一次技术讨论,一位演讲者滔滔不绝,一口气列出32个用例,指出在这些用例中,一些新的NoSQL系统比OracleRDBMS更快、更好.
我发现,他说的每个示例都是独特的、不寻常的或刻意塞入的.
"因此,如果你有这种不同寻常的数据结构和业务目标组合,需要某种特定的分析类型,当然,你可使用Oracle,但若想缩短开发周期或提高性能,你应当使用NewNoSQLOpenSourceTool#17.
"例如,原来需要30行SQL代码,若用新工具,完成相同的工作只需要23行代码.
但是,为满足这32个不同用例的需要,为了少输入7行代码,用户每次都需要学习、安装、配置、测试和部署不同的工具.
这合理吗换用新工具,还是继续使用Oracle各位,不要误解我的意思,不用说,所有系统都有自己的用武之地.
但时至今日,全球最强大的信息工具仍然是关系数据库.
截至撰写本书时,在DB-ENGINES.
com正式排名中,数据库引擎的前四强都是RDBMS,前十位中的七位是关系数据库模型(网址为http://db-engines.
com/en/ranking).
在排名中,Oracle的RDBMS多年来一直独占鳌头,MySQL则屈居亚军.
所有Oracle产品的基础核心语言是OracleSQL(StructuredQueryLanguage,结构化查询语言).
全球所有数据库供应商的所有主流关系数据库都使用SQL语言.
一些较新的数据存储未必基于关系数据模型,但都在努力实现类似于SQL的语言,如Hadoop系统使用的CassandraCQL或IBM的类似于SQL的查询语言HiveQL(https://www.
ibm.
com/developerworks/library/bd-sqltohadoop2/).
在全球的数据库模型中,关系数据库模型依然稳坐头把交椅,SQL是所有关系数据库模型序言VII共用的唯一语言.
SQL也是新语言的专用数据库模型的对照标准.
SQL是支持全球政府和机构成功运行的功能强大的卓越语言,本书旨在帮助你获得SQL认证.
通过学习本书来获得SQL认证是你的明智选择.
欢迎你阅读本书!
内容简介本书的组织方式使本书成为一本OracleDatabaseSQLExpert考试的深度复习指南,既适用于有经验的Oracle专业人员,也适用于SQL技术的初学者.
每章都覆盖了考试中的一个主要方面,在强调关系数据库应用程序理论的同时,也重视实际操作.
本书附带资料要详细了解本书附带的资源(可扫描封底二维码获取),请参阅附录A.
考试准备清单在前言的结尾,你将看到考试准备清单,这个清单帮助你对照官方考试目标以及本书提出和覆盖的目标.
清单还使你可以在学习之余测评一下对每个目标的掌握程度,可以检查学习进展情况,并确保将时间花费在难度较大或不熟悉的章节上.
每章中的内容我们将全书分为多章,聚焦重要内容,加强要点,并提供参加考试的有益提示.
在每章中,可看到以下内容:每章开始部分给出认证目标(CertificationObjective),认证目标给出了该章的主题,这是通过考试所必须掌握的内容.
我们以认证目标作为标题,这样当你看到它时就可以确定它是一个认证目标.
考试要点(ExamWatch)给出需要注意的信息,而且这些考试要点可能成为考试中潜在的陷阱.
这些有益的提示是由曾经参加过认证考试并得到认证的作者提供的,因此请读者务必关注这些要点.
实践要点(OntheJob)描述了实际工作中经常遇到的问题.
它们对与认证和工作相关的主题提供了有价值的观点,指出了常见错误并根据工作中的讨论和经验解决这些问题.
认证总结(CertificationSummary)对该章进行简洁回顾,并重述与考试相关的要点.
本章知识点回顾(Two-MinuteDrill)位于每章的结尾,是该章要点的列表.
也可用于考前回顾.
OCAOracleDatabaseSQL认证考试指南(1Z0-071)VIII自测题(SelfTest)提供一些问题,目的是检查你对每章内容的掌握程度.
每章结尾会给出这些问题的答案和解释.
完成每章学习后,通过进行自测,可巩固从该章中学到的知识.
一些提示读完本书后,请留出一些时间来进行彻底的复习.
你可能需要多次复习本书,并利用下面给出的方法复习书中的内容.
(1)重读所有的"认证总结"和"本章知识点回顾",或者让别人向你提问,也可以考试之前作为一种快速复习的方法.
你还可制作一些练习卡,在上面写上"本章知识点回顾"的内容.
(2)重读所有的"考试要点".
请牢记:这些考试要点是已经参加并通过考试的人所写的.
他们知道你会遇到的情形.
(3)重做"自测题".
可在阅读完一章后就进行自测,因为这些问题将帮助你巩固所学的内容,但更好的做法是等完成全书的学习后,一次性完成所有问题.
假想你是在参加真正的考试.
当你第一次做所有的题时,将答案单独写在一张纸上,通过这种方式,可以在以后重新多次做这些题,直到感觉已经掌握了这些内容为止.
(4)做一套练习题,计时且不要看书,计算一下成绩.
学习过程中不断记笔记,并在考试之前持续记下你认为需要进一步学习的内容.
有关练习题的更多信息,请参阅附录A.
致谢首先感谢你和其他读者购买本书.
由于你、你的兴趣和你的职业追求,由于你们致力于完善自己和数据库行业,本书应运而生.
正是有这么多有兴趣的读者,OraclePress才会安排一个顶尖专家团队撰写这本优秀书籍,来满足读者的需要.
谢谢你们,没有你们这些求知若渴的人士,本书不会问世.
关于你手头的这本书籍,我们做了大量工作.
本书是对数据库行业的宝贵贡献,是一批有才华、执着和专注的专业人员辛勤汗水的结晶.
首先,特别感谢HilaryFlood.
没有她,就没有本书.
感谢她的毅力、耐心、专长和洞察力.
ClaireYee是编辑部的协调人.
她一贯开朗、鼓舞人心,并孜孜不倦地工作,从组稿、技术编辑、文字加工到最终印制,确保每一章达到质量标准.
DipikaRungta担任项目经理.
从Claire接手各个章节后,Dipika进行额外的审核、编辑以及印前检查.
Dipika以工作为乐,对本书的出版做出卓越贡献.
JodyMcKenzie是编辑主管,在关键时刻参与进来,解决一些具有挑战性的问题.
LisaMcCoy是校对员,她发现了不少输入错误.
文字编辑是KimWimpsett,他将我的一些晦涩语言润色成优美流畅的故事.
制作主管是JimKussow,他管理这本大块头书籍的生产和印刷过程.
感谢VasundharaSawhney在此次旅程的最初阶段所做的贡献.
策划编辑是LisaMcClain.
她启动了这个项目,并一直参与进来,以确保项目前进到目的OCAOracleDatabaseSQL认证考试指南(1Z0-071)X地.
面对不确定性,她知难而进.
OraclePress有多位才华横溢的策划编辑,LisaMcClain是这个行业最好的策划编辑之一,很荣幸与她一起参与这个项目.
非常感谢技术编辑ToddMeister.
Todd孜孜不倦地工作,审查和分析数百页代码,他审核了大量示例、插图、自测题和答案.
他有学者风度,谈吐文雅,毅力惊人,与整个团队合力前行.
认证考试指南书籍的一个特殊挑战是,必须包含各种语法组合,并非从头到尾构建一个应用程序或大项目,示例和插图是变化的.
这是对参加认证的考生的挑战,更是对技术编辑的挑战.
然而,Todd沉着镇定,富有专业精神,出色地完成这些工作.
当书稿在各个流程传递时,我总能看到熟悉的"ToddMeister已审"注释.
虽然本书已历经了多个版本,但仍存在一些错误——事实上每种出版物都是这样.
Todd将本书的质量提高了好几个等级.
还非常感谢BobBryla,他担任多本OraclePress书籍的技术编辑,他为1Z0-071认证考试提供大量问题和答案.
谢谢你,Bob!
感谢多年来我在各地各种规模的公司(例如Atrexa、LHRDigitalConsulting、Corbinian、Sysorex、ISC、db-Training、MAOP、EOUG、Boeing、ORI、ARC、NPC等)工作期间结识的友人和同事,其中有些人可能仍在这些公司,有些人已经离职,我无法一一列举这些对我的人生和职业提供了指导或帮助的人,以下仅列出一部分人的名单,他们是:MarkO'Donnell、MattHutchinson、DaveDougherty、JackieDougherty、JohnCook、TimGreen、JeremyJudson、SalamQureishi、NadirAli、WendyLoundermon、AtharJavaid、DanDoherty、TonyCovert、BiancaCanales、MarleneTheriault、KevinLoney、MichelleVeghte、ArdellFleeson、MarkusDale、KarlDavis、AllenShoulders、EdWolfe、AshleyRubeck、CindyShiflett、PhilHasse、DaveGagner、JonFeld、JayNielsen、SteveSmith、EdgarKline、DaveSalmen、OscarWood、JamesPerry、TerriBuckler、SarahHenrikson、MarkTash、SteveVandivier、AdhilShaikh、MoniqueTribolet、EdSpinella、DinoMerkezas、KathyGardos、BertSpencer、KarenOwens、MikeAult、GrahamSeibert、VinceAdams、BobSchnetter、JoshParreco、CraigKasold、JenniferBlair、BrettSimpson、MikeGerrity、DaveCooper、TedCohen、SteveCummings、JimmySmith、PeterDube、RuthieWashburn、KimCurl、ToniBoyd、RobinRuth、ReneeBattle、DannyDuong、HungNguyen、DrewDaffron、KenO'Neal、KimMiller、JohnLauder、BobSmout、ToddStottlemeyer、PaulLeslie、DavidWise、DanRutherford、LauraTaylor、LauraSetliff、TrinTranh、WilsonDizard、PaulElliott、JohnMetelsky、DonKnight、ArtGarrison、MarshallCohen、MarkWojno、BillMcCarren、JonathanSalant、CaroleFeldman、TammyLytle、SheilaCherry、RickDunham、DougHarbrecht、AudreyFord、TimAquilino、DebbieBeebe、BillSimpson、AnnetteTaylor、FredWills、CarleszaHarris、GardnerMcBride、CindyMcBride、JimFlyzik、RobGuerra、JohnCoffey、LyleBeall和BobbieBeall.
感谢RoyPatterson和JimBauchspies为我安排了第一个Oracle项目.
感谢Todd、CindyBauchspies、Mike、KateWaters、Gavin、James、ClaudiaWaters、Phil、CharlotteJones、HarrietMarin、JoeMotz和DannaHenderson.
感谢以下曾帮助过我的已故人士:Aaron"Eppie"Epstein、MartinKuhn、JohnCosgrove、MikeShanahan、GordonGustin、HelenKamajian、GeorgineBauchspies、EileenWaters和JackHenderson.
感谢我多年来的商业伙伴DanHinkle,他为我提供了很多机会,还要特别感谢Brenda.
感谢我多年来教过的优秀Oracle学生,由于人数众多无法一一提及,我带的每个班级都具有鲜明的个性,每名学生都带给我独特经验以及对学习过程的观察,这些都带给我很多乐趣和致谢XI回报,与你们的交流让我受益匪浅,做到了教学相长.
感谢好友BiancaCanales给我提出的关于技术、商业和处世的宝贵意见.
感谢我的父亲Don,他是一名多才多艺的工程师,也是项目管理人员,他教会我辛勤工作和专注的价值,对我言传身教.
我的第二本书献给了他.
感谢我的母亲Joan,她是最伟大的母亲,我的第一本书献给了她.
她不畏艰险,一直乐观地支持着我!
特别感谢爱妻Lisa,你美丽、温柔、贤良、聪慧,谢谢你给予我的爱和鼓励!
最后特别感谢JimBauchspies和JimBauchspies已故的妻子Georgine,你们就像我的再生父母,在很多方面都给予我巨大帮助;Georgine那富有感染力的笑声、温暖和爱心是我永远不会忘记的珍贵回忆.
Jim给我安排了第一个Oracle项目,还给我提出很多工作和生活方面的建议.
本书是我写的第三本书,我将本书献给Jim.
前言本书将指导你备考OCAOracleDatabaseSQLCertifiedAssociate考试1Z0-071,帮助你获得SQL认证.
通过阅读本书,你将熟悉1Z0-071考试所测试的技术和知识体系.
由于本书的首要目标是助你通过考试,因此有时不会介绍SQL的每个方面.
对于SQL的某些方面,本书只做适度介绍,使你理解为通过考试需要掌握哪些内容.
我希望,即使在你通过1Z0-071考试后,本书依然可作为你学习专业知识的重要来源.
第1章将提供关于考试以及考试经验的一些介绍性内容.
之后,将根据认证目标回顾相关主题.
这些主题是由官方公示的,由Oracle公司发布,它们指明考试涉及的内容.
本书不会也不能展现任何真正的考试题及相应答案,我们这些已经参加过考试的人是不允许泄露此类信息的.
但本书将聚焦于考试所针对的主题,并讲解你需要了解的相关知识.
本书是全面的,是专门针对考试的.
注意,Oracle公司已制作了大量可在线获取的手册,它们描述关于其产品的全部功能.
但我们知道,这些极具价值的资源数量庞大(一些可能达数千页),有时涉及过多细节,有时内容过于笼统.
而且,在没有指导的情况下,人们常常难以在其职业生涯中有效地学习这些知识.
本书的目的正是提供这种指导,而且其作用不仅限于此,它是一本独立学习手册,包括完整的描述、语法细节、示例代码、自测题以及模拟真实认证考OCAOracleDatabaseSQL认证考试指南(1Z0-071)XIV试的练习题.
换句话说,本书正是通过考试和获得认证所需智慧的藏宝图.
本书是多年认证考试经验的产物,其产生过程十分艰辛,并被全世界具有各种背景和实力的富有经验的Oracle专业人员所检验,最终以脉络清晰的形式展现出来,可帮助你快速有效地为认证考试做好准备.
本书适合以下读者:对于那些经验丰富且仅关注特定主题的专业人士,本书是按认证目标进行分类的.
如果你已经看过公布的认证目标,仅希望针对其中一部分内容进行学习,你只需要找到适当的章节学习即可.
对于希望得到更全面复习的读者,认证目标和章节是按照顺序排列的,这样可从基础内容开始,逐步过渡到更高级的主题.
可逐步学习本书并掌握通过考试需要的全部知识.
对于那些只希望直接获得考试经验的资深从业人员,可直接通过本书提供的资料参加模拟考试.
每个问题都对应本书的一个章节或主题,如果做错了某些模拟题,那么可快速定位到需要进一步学习的内容.
1Z0-071认证考试使用的试题均在OracleDatabaseversions11gRelease2(版本11.
2.
0.
1.
0)乃至12cRelease1(版本12.
1.
0.
1.
0)中进行了测试.
本书使用OracleDatabase12cRelease1.
对于屏幕截图,我使用截图软件"捕获"显示在SQL*Plus或SQLDeveloper中的SQL语句.
注意,在SQLDeveloper的ScriptOutput显示中,默认情况下数字数据左对齐显示,而不像SQL*Plus那样对数字数据默认采用右对齐显示.
实体-关系图取自OracleSQLDataModeler.
充分阅读,认真学习,祝你好运!
欢迎你将反馈意见发送至soh@corbinian.
com.
Exam1Z0-071考试准备清单认证目标所在章节初级中级专家级Oracle和SQL1确定实体-关系图与关系数据库之间的联系1解释数据库与SQL的联系1描述DDL的作用1描述DML的作用1构建SELECT语句,从Oracle数据库表中检索数据1使用DDL语句创建和管理表2主数据库对象的种类2创建一个简单表2查看表的结构2列出各列可用的数据类型2如何在创建表的同时创建约束2删除列以及将列设置为UNUSED2创建和使用外部表2操纵数据3删除数据3前言XV(续表)认证目标所在章节初级中级专家级向表中插入行3更新表中的行3从表中删除行3控制事务3对数据进行限制和排序4对查询所检索的行进行排序4对查询所检索的行进行限制4使用&符号替换在运行时限制和排序输出4使用SQL行限制子句4使用单行函数定制输出5SQL中可使用的各类函数5在SELECT语句中使用字符函数、数值函数、日期函数和分析函数(PERCENTILE_CONT、STDDEV、LAG和LEAD)5使用转换函数和条件表达式6描述各种类型的转换函数6使用TO_CHAR、TO_NUMBER和TO_DATE转换函数6在SELECT语句中使用常见函数和条件表达式6使用分组函数报告聚合数据7描述分组函数的用法7使用GROUPBY子句对数据分组7通过使用HAVING子句包含或排除分组后的行7显示多个表中的数据8描述不同类型的连接及其功能8编写SELECT语句以使用等值连接和非等值连接从多个表中访问数据8使用自连接将表连接到自身8使用外连接查看通常不满足连接条件的数据8使用子查询检索数据9定义子查询9描述子查询能解决的问题类型9描述子查询的类型9使用关联子查询查询数据9使用关联子查询更新和删除行9使用EXISTS和NOTEXISTS操作符9使用WITH子句9编写单行子查询和多行子查询9管理模式对象10OCAOracleDatabaseSQL认证考试指南(1Z0-071)XVI(续表)认证目标所在章节初级中级专家级描述模式对象的工作原理10使用可见列/不可见列创建简单视图及复杂视图10创建、维护和使用序列10创建和维护索引(包括同一列上的不可见索引和多索引)10执行FLASHBACK操作10使用集合操作符11描述集合操作符11使用一个集合操作符将多个查询组合为一个单独的查询11控制返回行的顺序11使用数据字典视图管理对象12查询各种数据字典视图12操作大数据集13描述多表INSERT语句的功能13将数据行合并到一个表中13控制用户访问14区分系统权限和对象权限14针对表和用户授予权限14区分权限和角色14目录第1章Oracle和SQL11.
1考试概述21.
1.
1参试过程和预期步骤31.
1.
2OracleSQL与ANSISQL的比较·41.
1.
3OracleSQL与OracleSQL*Plus的比较·41.
1.
4SQLFundamentalsI与SQLCertifiedAssociate的比较·41.
1.
5确定合适的学习材料81.
2确定实体-关系图与关系数据库之间的联系101.
2.
1实体-关系图和数据建模·101.
2.
2关系数据库121.
2.
3多对多关系141.
2.
4数据库的规范化·151.
3解释数据库与SQL的联系·161.
4描述DDL的作用·181.
5描述DML的作用191.
6构建SELECT语句以从Oracle数据库表中检索数据191.
7认证总结201.
7.
1本章知识点回顾·211.
7.
2自测题·211.
7.
3自测题答案·23第2章使用DDL语句创建和管理表·····252.
1主数据库对象的种类262.
1.
1数据库对象的定义·262.
1.
2模式·27OCAOracleDatabaseSQL认证考试指南(1Z0-071)XVIII2.
2创建一个简单表282.
2.
1对表或其他对象进行命名········292.
2.
2SQL语句CREATETABLE······332.
3查看表的结构342.
4列出各列可用的数据类型352.
4.
1字符352.
4.
2数值362.
4.
3日期372.
4.
4大对象382.
5如何在创建表的同时创建约束392.
5.
1在CREATETABLE语句中创建约束·402.
5.
2约束的类型432.
6删除列以及将列设置为UNUSED512.
6.
1删除列512.
6.
2UNUSED542.
7创建和使用外部表552.
7.
1使用外部表的好处552.
7.
2创建外部表552.
8认证总结592.
8.
1本章知识点回顾602.
8.
2自测题612.
8.
3自测题答案65第3章操纵数据·673.
1删除数据683.
2向表中插入行703.
2.
1默认列列表703.
2.
2枚举的列列表723.
3更新表中的行753.
3.
1表达式763.
3.
2约束763.
3.
3WHERE子句773.
4从表中删除行783.
5控制事务783.
5.
1COMMIT·793.
5.
2ROLLBACK·823.
5.
3SAVEPOINT·833.
5.
4回顾ROLLBACK·843.
6认证总结853.
6.
1本章知识点回顾·863.
6.
2自测题·873.
6.
3自测题答案·91第4章对数据进行限制和排序954.
1对查询所检索的行进行排序·······964.
1.
1通过名称进行引用·964.
1.
2表达式·994.
1.
3通过位置进行引用·1014.
1.
4组合·1014.
1.
5ORDERBY和NULL·1024.
2对查询所检索的行进行限制·····1024.
2.
1WHERE子句1024.
2.
2布尔逻辑·1064.
2.
3其他WHERE子句特性1104.
2.
4其他概念·1124.
3使用&符号替换在运行时限制和排序输出1134.
3.
1&符号1134.
3.
2DEFINE和UNDEFINE命令·1154.
3.
3SET和SHOW命令·1164.
3.
4ACCEPT和PROMPT命令····1164.
4使用SQL行限制子句·1194.
4.
1FETCH·1194.
4.
2WITHTIES·1204.
4.
3OFFSET1214.
5认证总结1224.
5.
1本章知识点回顾·1234.
5.
2自测题·1254.
5.
3自测题答案·128第5章使用单行函数定制输出1335.
1SQL中可使用的各类函数·1345.
1.
1字符函数·1355.
1.
2数值函数·1355.
1.
3日期函数·1355.
1.
4其他函数·135目录XIX5.
2在SELECT语句中使用字符函数、数值函数、日期函数和分析函数(PERCENTILE_CONT、STDDEV、LAG和LEAD)1365.
2.
1DUAL表1365.
2.
2字符函数1365.
2.
3数值函数1425.
2.
4日期函数1445.
2.
5分析函数1495.
2.
6嵌套函数1565.
3认证总结1575.
3.
1本章知识点回顾1585.
3.
2自测题1585.
3.
3自测题答案160第6章使用转换函数和条件表达式····1636.
1描述各种类型的转换函数1646.
2使用TO_CHAR、TO_NUMBER和TO_DATE转换函数·1666.
2.
1最常用的转换函数1666.
2.
2其他转换函数1736.
3在SELECT语句中使用常见函数和条件表达式1766.
3.
1CASE1776.
3.
2DECODE1776.
3.
3NVL1786.
3.
4NULLIF1796.
4认证总结1796.
4.
1本章知识点回顾1806.
4.
2自测题1816.
4.
3自测题答案183第7章使用分组函数报告聚合数据····1877.
1描述分组函数的用法1887.
1.
1COUNT·1907.
1.
2SUM·1927.
1.
3MIN,MAX1927.
1.
4AVG1937.
1.
5MEDIAN1947.
1.
6RANK·1947.
1.
7DENSE_RANK1967.
1.
8FIRST,LAST·1977.
1.
9其他聚合函数·1977.
2使用GROUPBY子句对数据分组1977.
2.
1多列·2017.
2.
2再论ORDERBY2027.
2.
3嵌套函数·2037.
3通过使用HAVING子句包含或排除分组后的行2057.
4认证总结2067.
4.
1本章知识点回顾·2077.
4.
2自测题·2087.
4.
3自测题答案·211第8章显示多个表中的数据·2158.
1描述不同类型的连接及其功能2168.
2编写SELECT语句以使用等值连接和非等值连接从多个表中访问数据2178.
2.
1内连接·2178.
2.
2使用表的别名·2198.
2.
3自然连接·2218.
2.
4USING2228.
2.
5多表连接·2238.
2.
6非等值连接·2238.
3使用自连接将表连接到自身·····2248.
3.
1自引用外键·2258.
3.
2自连接的语法·2258.
4使用外连接查看通常不满足连接条件的数据2268.
4.
1LEFTOUTERJOIN·2268.
4.
2RIGHTOUTERJOIN2278.
4.
3FULLOUTERJOIN·2278.
4.
4过时的Oracle外连接语法:2288.
5认证总结2298.
5.
1本章知识点回顾·2298.
5.
2自测题·2308.
5.
3自测题答案·234OCAOracleDatabaseSQL认证考试指南(1Z0-071)XX第9章使用子查询检索数据·2379.
1定义子查询2389.
2描述子查询能解决的问题类型2399.
3描述子查询的类型2409.
4使用关联子查询查询数据2419.
5使用关联子查询更新和删除行2439.
5.
1在UPDATE语句中使用关联子查询·2439.
5.
2在DELETE语句中使用关联子查询·2459.
6使用EXISTS和NOTEXISTS操作符2459.
7使用WITH子句·2469.
8编写单行子查询和多行子查询2479.
8.
1单行子查询2479.
8.
2多行子查询2509.
9认证总结2529.
9.
1本章知识点回顾2539.
9.
2自测题2549.
9.
3自测题答案259第10章管理模式对象·26310.
1描述模式对象的工作原理·······26410.
1.
1表26410.
1.
2约束26410.
1.
3视图26410.
1.
4索引26410.
1.
5序列26510.
2使用可见列/不可见列创建简单视图及复杂视图26510.
2.
1创建视图26610.
2.
2可更新的视图26810.
2.
3内联视图27110.
2.
4ALTERVIEW27210.
2.
5可见/不可见列27310.
3创建、维护和使用序列27510.
3.
1创建和删除序列27610.
3.
2使用序列27710.
4创建和维护索引(包括同一列上的不可见索引和多索引)27910.
4.
1Oracle数据库优化器·28010.
4.
2隐式创建索引28010.
4.
3单列索引28110.
4.
4复合索引28310.
4.
5唯一索引28410.
4.
6删除索引28410.
4.
7可见和不可见索引28510.
4.
8相同列集上的备用索引····28610.
5执行FLASHBACK操作28710.
5.
1概述28710.
5.
2恢复被删除的表28710.
5.
3将现有表的数据恢复到一个特定时间点29010.
5.
4标记时间29210.
6认证总结29510.
6.
1本章知识点回顾29610.
6.
2自测题29710.
6.
3自测题答案302第11章使用集合操作符30511.
1描述集合操作符30611.
2使用一个集合操作符将多个查询组合为一个单独的查询30711.
2.
1UNION·30811.
2.
2UNIONALL31011.
2.
3INTERSECT·31011.
2.
4MINUS·31111.
2.
5组合·31211.
3控制返回行的顺序31211.
3.
1ORDERBY——根据位置进行排序31311.
3.
2ORDERBY——根据引用进行排序31411.
4认证总结31511.
4.
1本章知识点回顾·31511.
4.
2自测题·31611.
4.
3自测题答案·320目录XXI第12章使用数据字典视图管理对象·32312.
1查询各种数据字典视图32412.
1.
1结构32412.
1.
2动态性能视图32712.
1.
3读取注解32712.
1.
4添加注解32812.
1.
5DICTIONARY视图·32912.
1.
6标识一个用户拥有的对象33012.
1.
7检查表和列33112.
1.
8编译视图33212.
1.
9检查权限33312.
1.
10检查约束33312.
1.
11查找列33412.
2认证总结33412.
2.
1本章知识点回顾33512.
2.
2自测题33612.
2.
3自测题答案338第13章操作大数据集·34113.
1描述多表INSERT语句的功能34213.
2将数据行合并到一个表中·······35313.
3认证总结35613.
3.
1本章知识点回顾35613.
3.
2自测题35713.
3.
3自测题答案361第14章控制用户访问·36314.
1区分系统权限和对象权限·······36414.
1.
1系统权限36414.
1.
2前提条件36614.
1.
3GRANT语句和REVOKE语句36714.
1.
4ANY·36914.
1.
5ADMINOPTION37014.
1.
6ALLPRIVILEGES·37114.
1.
7PUBLIC37114.
2针对表和用户授予权限37214.
2.
1模式前缀37314.
2.
2WITHGRANTOPTION·37514.
2.
3REVOKE37514.
2.
4ALLPRIVILEGES·37514.
2.
5权限的依赖性37614.
2.
6在数据字典中查看权限····37614.
2.
7授予角色37814.
3区分权限和角色38014.
4认证总结38114.
4.
1本章知识点回顾38214.
4.
2自测题38314.
4.
3自测题答案386附录A本书配套资料·389术语表·391第1章Oracle和SQL认证目标1.
01考试概述1.
02确定实体-关系图与关系数据库之间的联系1.
03解释数据库与SQL的联系1.
04描述DDL的作用1.
05描述DML的作用1.
06构建SELECT语句以从Oracle数据库表中检索数据√本章知识点回顾Q&A自测题OCAOracleDatabaseSQL认证考试指南(1Z0-071)2Oracle公司的SQL(StructuredQueryLanguage,结构化查询语言)无疑是当今世界各国政府和商业机构所使用的最强大、最重要的计算机语言之一.
从本章开始,本书将助你备考Oracle1Z0-071考试,获得OracleDatabaseSQLCertifiedAssociate称号.
首先将讨论关于Oracle1Z0-071考试本身的一些细节,包括Oracle1Z0-071考试与其他Oracle认证考试的区别,以及参加考试时可能会遇到的情况.
此后将给出一些有关学习资料的建议.
会分析第一个考试目标"Oracle和SQL";第一个子目标将讨论RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)概念,解释ERD(Entity-RelationshipDiagrams,实体-关系图).
此后分析RDBMS和SQL的联系,深入分析SQL的两个重要子集:DDL(DataDefinitionLanguage)和DML(DataManipulationLanguage).
最后学习如何构建SQLSELECT语句.
通过本章的学习,你将完成第一个备考目标,并为每个后续目标打下基础.
如果你是一位经验丰富的Oracle认证的专业人员,已经熟悉考试流程,那么可能希望跳过1.
1节的内容.
实际上,你可直接跳转到你认为需要学习的任何考试目标.
然而,即使你已经了解了本书的部分主题,我仍然建议你学习本书的所有内容.
考试中,会考查你对技术细节和细微差别的掌握程度,会提出一些似是而非的概念和关键字,看你能否辨清.
你必须扎实掌握本书讲述的知识点,将SQL技能维持在最高水平;卓越的能力将让你信心倍增,极大地增大你通过考试的可能性,对你的职业发展也大有益处.
认证目标1.
011.
1考试概述OracleDatabaseSQLCertifiedAssociate是一门要求很高的考试,涉及SQL的语法、处理、应用、业务规则等非常广泛的知识.
考试中的典型题目如下:(1)你将看到一个展示,它可能是一个数据输出集合(包含6列、20或30行),也可能是包含6个或更多个实体的实体-关系图(ERD).
(2)接下来,你将看到一组相关的SQL语句,这些语句对展示内容进行操作,这些SQL语句可能较长,可能包含一系列嵌套的标量函数、聚合函数、各类子查询,以及使用涉及超大数据类型、复杂连接条件等的各种语句和子句.
(3)有些代码是正确的,有些是错误的,你需要加以鉴别.
(4)提供示例展示及SQL代码后,可能要求你确定SQL语句执行后数据库的最终状态.
(5)根据你看到的SQL语句,可能要求你确定在语句执行过程中,Oracle数据库完成的内部工作.
(6)一道题可能包含多个正确答案,你必须指出每个正确答案.
一个问题涉及的信息就不少.
请你想一想,在整个考试过程中,你需要在100分钟内答完73道题,这意味着每个问题平均只给你留82秒的时间.
考试要点与很多Oracle认证考试一样,1Z0-071考试包含不少多选题,题目中会指出"选择所有正确答案".
这种情况下,你必须认真分析每个答案.
找到一个正确答案后,并不能大功告成,你必须继续检查.
此类问题不能用排除法,因为每个答案都可能是正确的.
一个多选题就像将多个单选题合为一体.
这种题更难,需要你更全面地掌握知识,需要更长的思考时间.
这门考试并不简单.
因此,认真研究,悟透本书,这样,你通过这门考试的可能性将大大提高.
第1章Oracle和SQL3本书将会帮助你备考,增强你对知识的掌握程度,弥补差距,并大大提高你成功通过考试的概率.
所以请准备好迎接这项有趣且极具价值的挑战,这将成为你的职业生涯中一个重要的里程碑.
一旦通过本考试,你将加入技术精英之列,成为百里挑一的人物,成为众人羡慕的优秀专业人员.
1.
1.
1参试过程和预期步骤下面介绍如何在网上报名参加考试,还介绍预期步骤.
考前准备下面介绍如何在网上报名参加考试.
注意,Oracle的注册过程可能发生变化.
在你阅读本书时,具体过程可能与此处的描述有出入.
注册网站是Oracle公司网站,即http://www.
oracle.
com.
单击Certification链接,查看1Z0-071考试页面.
在那里,单击用于考试注册的链接,打开监考公司PearsonVue的网站www.
pearsonvue.
com.
在该网站,可找到一所本地学校,该学校代理考试事宜.
选择考试时间(建议你至少提前一天报名,最好提前一周),提供信用卡信息支付考试费.
这样,你就预订了在确切的时间和地点参加考试.
到达考场后,工作人员会要求你关闭手机,并将它交给某位工作人员.
工作人员将手机锁在一个小袋里,将钥匙留下,将存有你手机的小袋交给你.
他们告诉你,可将小袋带入考场,但无法使用.
考试结束后才能将手机取出.
在提供两种形式的身份证明后,他们会将你带入一个房间,里面有桌子和计算机.
登录进入自动考试系统.
如果希望在考试期间做一些笔记,可要几张白纸、一支钢笔或一块干式擦拭板.
注意,无论做了哪种笔记,在考试结束后都需要上交.
此时,考试尚未开始,你可能一个人留在那里.
在计算机的自动考试系统中,将显示一系列公告和协议供你查看.
做好准备后,可单击按钮,开始计时考试.
从第一道题开始计时,在答题过程中,可观看屏幕上的计时器了解还剩余多长时间.
所有考题都是多选题.
许多考题要求你单击一个按钮以显示出展示,该展示以新窗口形式弹出,其大小恰能显示全部内容.
通常是实体-关系图,也可能是数据列表、表的内容或报表输出.
很多题都包含SQL代码.
根据我的考试经验,许多题中罗列了大量与问题要点无关的图、代码或数据输出.
多数问题都会显示实体-关系图、数据列表,以及对业务规则或背景的简述,最后才是真正要问的问题.
最终你会发现,浪费了大量时间来分析展示详情;等到读到提问处,才发现根本不需要过分研究整个展示.
对很多问题而言,只要你理解相关知识点,看一眼实体-关系图就能答出.
在分析新题时,可跳过代码和数据输出(报表、展示等),直达实际问题处,这往往是多选题之前的最后一句话.
先读题,再简单浏览一下前面的材料;你会发现,与仔细阅读背景材料的做法相比,采用这种做法,可更快地确定答案.
考试要点考试时间是有限的,你要首先看题,将精力集中在问题上,不要让大量SQL文本分散自己的注意力.
你需要在100分钟内答完73道题,这意味着每道题平均只给你留82秒的时间.
有些题可一挥而就,有些题则耗时较长.
要管控好时间.
屏幕上每次只显示一道考题.
单击Next按钮可跳到下一道题.
要跳到下一道题,并不需要将当前考试题回答完毕.
每道题的左上角有一个可选的Mark复选框.
无论是否回答了这道题,都可给其OCAOracleDatabaseSQL认证考试指南(1Z0-071)4做标记,这样稍后你可再次返回这些考题进行作答.
当答完所有考题后,将到达汇总屏幕,你将看到一个表,表中每项为一个数字,对应着考题的编号.
每道题仅可通过编号来识别,并呈现考生给出的答案.
若将某题标记为Marked,表中将突出显示一个M.
如果某题未完整作答,则突出显示一个I,代表Incomplete.
这样你可在考试结束之前很方便地查看答案并完成作答,也可再次检查考题,包括那些标记为Marked的题.
值得注意的一点是,对于多选题,有些考题会明确告诉你需要从备选答案中选择多少个正确答案.
例如,某题的答案中有两个是正确的,考题会告诉你选择两个答案.
这种情况下,如果尝试选择第三个答案,自动考试系统将不允许你这样做,而会弹出一个消息窗口,提示你需要首先去除之前已经选中的某个答案.
假设你并未注意到考题有多少个正确答案.
例如,某道题有三个正确答案,而你只选择了两个答案并继续答题,系统不会阻止你这样做,这样仅会使该考题处于不完全作答的状态.
实际上你总是可以继续作答并令任何考题处于未完全作答的状态.
但当你提交考卷,最终看到汇总页面时,未完全作答的题目将明确标注出来,你可对它们进行进一步作答.
考试要点不必担心,在提交试卷前,必然会经过汇总页面.
在汇总页面上,要认真检查是否还有未答题,要审查带有标记的题.
做完所有考题后,如果对自己的回答感到满意,可单击汇总页面上的Exit按钮,系统会立即计算考试成绩,之后屏幕上会显示出你的分数和及格分数.
即使遇到特殊情况,也会在24小时内,通过电子邮件将考试结果告诉你.
此时,带上手头的所有纸张,以及锁有贵重物品(如手机)的小袋,来到考试中心的前台,职员会打印出考试结果副本,会打开小袋并将手机归还给你.
如果考试通过,你可以高兴地离开,你已获得OracleDatabaseSQLCertifiedAssociate称号.
1.
1.
2OracleSQL与ANSISQL的比较认证考试将测试OracleSQL.
它与美国国家标准协会(AmericanNationalStandardsInstitute,ANSI)所建立的SQL标准(ANSISQL)很接近,但不完全相同.
你不需要知道它们之间的区别,这些区别与考试无关.
1.
1.
3OracleSQL与OracleSQL*Plus的比较认证考试的测试内容是OracleSQL,而非Oracle对SQL进行改进得到的SQL*Plus.
但有两个例外:DESC命令和替换变量.
SQL*Plus是一组命令,也是软件工具,在它的界面中,可输入SQL和SQL*Plus命令,并监视它们的执行.
SQL*Plus命令包含大量选项,其中很多都用于设置输出格式.
这些命令不属于考试范围.
除DESC命令和替换变量外,本书不打算介绍其他SQL*Plus命令.
注意,本书有时会使用SQL*Plus命令行接口来示范OracleSQL命令.
1.
1.
4SQLFundamentalsI与SQLCertifiedAssociate的比较如前所述,由于你正计划通过参加1Z0-071考试来获得SQLCertifiedAssociate认证,因此很可第1章Oracle和SQL5能你已经参加过另一门考试,即SQLFundamentalsI(1Z0-051).
这两门考试有一些共同目标,但1Z0-071的难度远超1Z0-051.
表1-1对这些目标进行了比较,并详细分析两门考试中的相似之处和不同之处.
左半部分是1Z0-051目标,右半部分是1Z0-071目标;将各行对齐,这样你能看清哪些目标是相同的,哪些存在差异.
一些示例如下:1Z0-051测试笛卡儿积(6.
4),但1Z0-071不测试.
两门考试都测试"限制和排序数据"目标及其三个子目标,但1Z0-071增加了两个子目标,即&符号替代以及SQL行限制子句.
1Z0-071测试关联子查询、EXISTS、NOTEXISTS、WITH,还测试数据字典、用户访问控制、多表插入以及MERGE.
而1Z0-051不测试这些主题.
1Z0-071测试"使用数据字典视图管理对象""控制用户访问""操作大数据集"等目标.
而1Z0-051不测试这些目标.
表1-11Z0-051与1Z0-071考试目标对比编号1Z0-051,SQLFundamentalsI考试目标编号1Z0-071,SQLCertifiedAssociate考试目标1.
0使用SQLSELECT语句检索数据1.
0Oracle和SQL—1.
1确定实体-关系图和关系数据库之间的联系—1.
2解释数据库与SQL之间的联系—1.
3描述DDL的作用—(类似主题见9.
1)1.
4描述DML的作用1.
1列出SQLSELECT语句的功能1.
2执行基本SELECT语句1.
5构建SELECT语句,从Oracle数据库表中检索数据2.
0限制和排序数据2.
0限制和排序数据2.
1限制通过查询检索的行数2.
2对查询所检索的行进行限制2.
2排序通过查询检索的各行2.
1使用ORDERBY子句对SQL查询所检索的行进行排序—2.
3使用&符号替换在运行时限制和排序输出—2.
4使用SQL行限制子句3.
0使用单行函数定制输出3.
0使用单行函数定制输出3.
1描述SQL中可用的各种类型的函数3.
1SQL中可用的各类函数3.
2使用SELECT语句中的字符、数值和日期函数3.
2a—3.
2b在SELECT语句中使用字符函数、数值函数、日期函数和分析函数(PERCENTILE_CONT、STDDEV、LAG和LEAD)4.
0使用转换函数和条件表达式4.
0使用转换函数和条件表达式4.
1描述SQL中可用的各种类型的转换函数4.
1描述SQL中可用的各种类型的转换函数4.
2使用TO_CHAR、TO_NUMBER和TO_DATE转换函数4.
2使用TO_CHAR、TO_NUMBER和TO_DATE转换函数4.
3在SELECT语句中应用条件表达式4.
3在SELECT语句中使用常见函数和条件表达式5.
0用分组函数报告聚合数据5.
0使用分组函数报告聚合数据OCAOracleDatabaseSQL认证考试指南(1Z0-071)6(续表)编号1Z0-051,SQLFundamentalsI考试目标编号1Z0-071,SQLCertifiedAssociate考试目标5.
1标识可用分组函数—5.
2描述分组函数的使用5.
1标识分组函数的使用5.
3使用GROUPBY子句对数据分组5.
2使用GROUPBY子句对数据分组5.
4使用HAVING子句包含或排除分组后的行5.
3使用HAVING子句包含或排除分组后的行6.
0显示多个表中的数据6.
0显示多个表中的数据—6.
1描述不同类型的连接及其功能6.
1写出使用等值连接和非等值连接从多个表中访问数据的SELECT语句6.
2编写SELECT语句,使用等值连接和非等值连接从多个表中访问数据6.
2使用自连接将表连接到自身6.
3使用自连接将表连接到自身6.
3通过使用外连接查看一般不满足连接条件的数据6.
4使用外连接查看通常不满足连接条件的数据6.
4生成两个或多个表中所有行的笛卡儿积—7.
0使用子查询解决问题7.
0使用子查询检索数据7.
1定义子查询7.
1定义子查询7.
2描述子查询能解决的问题类型7.
2描述子查询能解决的问题类型7.
3列出子查询的类型7.
3描述子查询的类型—7.
4使用关联子查询查询数据—7.
5使用关联子查询更新和删除行—7.
6使用EXISTS和NOTEXISTS操作符—7.
7使用WITH子句7.
4编写单行子查询和多行子查询7.
8编写单行子查询和多行子查询8.
0使用集合操作符8.
0使用集合操作符8.
1描述集合操作符8.
1描述集合操作符8.
2使用集合操作符将多个查询合并成一个查询8.
2使用集合操作符将多个查询合并成一个查询8.
3控制返回的行的顺序8.
3控制返回的行的顺序9.
0操纵数据9.
0操纵数据9.
1描述每个DML语句—(类似主题见1.
4)—9.
1删除数据9.
2向表中插入行9.
2向表中插入行9.
3更新表中的行9.
3更新表中的行9.
4从表中删除行9.
4从表中删除行9.
5控制事务9.
5控制事务10.
0使用DDL语句创建和管理表10.
0使用DDL语句创建和管理表10.
1对主要数据库对象分类—10.
2查看表结构—10.
3列出可用于列的数据类型10.
1列出各列可用的数据类型第1章Oracle和SQL7(续表)编号1Z0-051,SQLFundamentalsI考试目标编号1Z0-071,SQLCertifiedAssociate考试目标10.
4创建简单表10.
2创建简单表10.
5解释如何在创建表期间创建约束10.
3创建表的约束—10.
4删除列以及将列设置为UNUSED—10.
5创建和使用外部表10.
6描述模式对象的工作原理——11.
0使用数据字典视图管理对象—11.
1查询各种数据字典视图—12.
0对用户访问进行控制—12.
1区分系统权限和对象权限—12.
2针对表和用户授予权限—12.
3区分权限和角色11.
0创建其他模式对象13.
0管理模式对象—13.
1描述模式对象的工作原理11.
1创建简单和复杂视图13.
2a—13.
2b使用可见列/不可见列创建简单视图及复杂视图11.
2从视图中检索数据—11.
3创建、维护和使用序列13.
3创建、维护和使用序列11.
4创建和维护索引13.
4a—13.
4b创建和维护索引(包括同一列上的不可见索引和多索引)11.
5创建私有和公有同义词—-13.
5执行FLASHBACK操作-14.
0操作大数据集-14.
1描述多表INSERT语句的功能-14.
2将数据行合并到一个表中SQLCertifiedAssociate考试涵盖的内容超过SQLFundamentalsI考试.
SQLFundamentalsI考试包含64道题目,整场考试时间为120分钟.
SQLCertifiedAssociate考试包含73道题目,整场考试时间为100分钟.
在撰写本书时,这两门考试在Oracle.
com网站上公布的考试及格分数是不同的:SQLFundamentalsI的考试及格分数是60分.
SQLCertifiedAssociate的考试及格分数是63分.
但要注意,考试及格分数可能在未通知的情况下发生变化.
Oracle公司保留用另一版本替换特定当前版本的权利,而且根据新版本的考试中所包含问题的复杂程度,及格分数可能做相应调整.
实际上,针对通过任何考试所需的分数,Oracle在其网站上发布了如下声明:"Oracle定期发布Oracle认证考试新版本,将独立设定每个版本的及格分数,以保证各版本的分数是统一的.
例如,为保持及格标准的一致性,如果新版本试题比旧版本试题的难度大,则新版本的及格分数会低一些.
因此,不同认证考试、不同考试版本的及格分数是不同的.
Oracle不建议你OCAOracleDatabaseSQL认证考试指南(1Z0-071)8针对及格分数进行考试准备,因为及格分数可能在未加通知的情况下发生变化.
"换句话说,你需要努力学习,不要试图仅达到及格所需的分数.
相反,你应当尽可能发挥全部实力,从而提高成功的概率.
主题范围许多试题测试你对多个知识点的掌握程度.
例如,我遇见过的一道题在一系列SELECT语句中包含多个嵌入式标量函数.
我必须掌握以下知识:理解各个标量函数的作用.
找出代码中的语法问题.
理解一个函数将结果传给另一个函数时的数据类型转换方式.
确认参数位置正确无误.
在给定的实体-关系图上下文中,确定过程和最终结果.
通过这道试题,你应该了解到,应当通透理解本书,掌握认证目标中列出的每个知识点,能冷静地找出所有事实.
在参加考试当天:要好好休息并按时参加,集中精力,不要分心.
对于每道试题,都要首先找到真正要问的问题,然后浏览展示和代码清单.
在认真答题的同时注意考试时间.
你的努力一定会有回报!
1.
1.
5确定合适的学习材料本节将列出你在备考期间可能希望收集的资料.
如果你已经是SQL老手,那么可能不需要它们,拥有本书就足够了.
但如果希望百尺竿头更进一步,则有必要按本节的内容做一些文档收集和软件配置工作.
1.
软件Oracle公司声称,他们已针对OracleDatabase11gRelease2(11.
2.
0.
1.
0)一直到12cRelease1(12.
1.
0.
1.
0)对1Z0-071考试的考题进行了验证.
本书的SQL语句针对12cRelease1.
如果没有所需的软件,可从Oracle公司官方网站下载,网址为http://www.
oracle.
com.
实践要点如果你尚未加入OracleTechnologyNetwork(OTN),那么应当立刻加入.
加入OTN是免费的,你只需要访问www.
oracle.
com/technetwork/并注册即可.
在那里可下载大量Oracle软件进行试用或研究,其中也包括数据库本身.
如果安装了Oracle个人版,那么很可能已经拥有了SQL*Plus和SQLDeveloper,两者均可用来输入和执行SQL语句.
否则,你只有下载其中之一,才能使用数据库.
你至少需要其中之一,或其他可用来输入和执行SQL命令的工具.
可能你现在正在使用某个工具,否则你就不会考虑来参加认证考试.
2.
Oracle公司的SQL工具Oracle公司各类产品和工具中的大多数均使用SQL,如OracleFusionMiddleware(包括OracleSOASuite)以及OracleAPEX等.
很多开发工具,如OracleJDeveloper,提供了输入SQL语句并执行SQL语句的能力.
针对此目的,最常用的工具是SQL*Plus命令行接口和SQLDeveloper.
SQL*Plus命令行接口SQL*Plus命令行接口是一种输入SQL命令、执行并观察结果的简单方式.
它是一个通用的系统,在各种操作系统中的运行方式均相同.
第1章Oracle和SQL9图1-1给出了SQL*Plus命令行接口的外观.
图1-1SQL*Plus命令行接口SQL*Plus命令行接口的优点在于它在Windows、UNIX和Linux操作系统下的功能一致.
这是Oracle已经提供的很多优势之一:在任意操作系统下均易用.
SQLDeveloperSQLDeveloper采用GUI风格的交互式单击、菜单驱动的界面,它的功能非常强大,便于开发者快速了解整个数据库.
有些命令既可通过键盘输入,也可使用图形菜单的单击交互完成输入.
图1-2给出了SQLDeveloper的外观.
图1-2SQLDeveloper下面是处理SQL语句的其他工具:OracleJDeveloperOracleApplicationExpressSQLWorkshop其他对于认证考试来说,选择哪个接口是无关紧要的.
SQL语句能在任何Oracle接口中正确地执行.
考试要点考试要测试的是SQL语法的知识,而非你在GUI中进行单击的能力.
换言之,通过单击界面,利用代码生成器来创建SQL表的功能对于通过考试而言没有任何帮助.
此外,如果你是一位真正的应用程序架构师或程序员,那么最终(甚至经常)必须设计或编写这样的大型程序:在这类程序中,为实现某些功能,必须将SQL代码嵌入其他编程语言中,而这些编程语言在应用程序运行时无法访问友好的GUI工具.
OCAOracleDatabaseSQL认证考试指南(1Z0-071)10此外,在本书提供的许多实例中你将看到,在很多SQL语句中,可将多种特性和子句组合起来,这些SQL语句看起来是正确的,执行时也不报错,能生成大量输出,但实际上返回的结果是错误的.
经过训练后,你只需要浏览SQL代码就可以发现问题,而未经训练,你甚至意识不到问题的存在.
无论是真正的软件开发人员,还是参加认证考试的人员,都要全面掌握SQL语法知识.
建议你在学习本书时,亲自输入示例命令并确保其能正确运行.
3.
文档本书是一本优秀的参考书,是一份极佳的文档,也是你参加考试的最佳指南.
但如果你想阅读更多文档,可通过OracleOTN网站下载,网址为www.
oracle.
com/technetwork/.
文档资料十分丰富,面向新手的资料尤其多.
对于通过认证考试而言,SQLLanguageReferenceManual一书特别有用.
这是一本大块头书籍,有2000多页,PDF文档的大小超过14MB.
但若作为考试指导手册而言,它过于详细,语法过于复杂,远远超出了考试的要求,因此难以作为主要的学习参考书来使用.
如果有人试图仅将它作为考试指导手册,那么他很快就会意识到这种方法难度颇大而且特别耗时.
因此你最好将本书用作备考指南.
在本书中,我经常会参考SQLLanguageReferenceManual,不过,我仅重点参阅与考试有关的部分.
其他有用的参考资料包括Oracle'sAdvancedApplicationDeveloper'sGuide,Concepts,SecurityGuide,GlobalizationSupport,andAdministrator'sGuide.
1Z0-071考题已经针对以下版本进行了测试:OracleDatabase11gRelease2OracleDatabase12cRelease1本书参考了OracleDatabase12cRelease1(也称为12.
1)的一组手册.
认证目标1.
021.
2确定实体-关系图与关系数据库之间的联系本书其余部分将深入分析每个考试目标.
本节将讨论实体-关系图概念,分析如何将实体-关系图转换为关系数据库.
将讨论业务需求、数据建模、主键的角色、外键的角色以及数据规范化等概念.
1.
2.
1实体-关系图和数据建模一般而言,数据库的存在就是为了支持现有的业务流程,或为一些现有的真实系统建立模型.
例如,一个典型的企业都有员工,员工通过提供一些产品或服务来满足客户的需要.
如果你负责构建一个自动化业务系统,则可以创建一个业务运营模型.
要创建数据模型,你需要确定业务的基本组成部分(或实体).
实体(entity)可能是客户、员工或产品.
也可添加更抽象的概念作为实体,如订单、退货、交易、客户光顾等.
在确定实体时,需要确定这些实体之间的关系是一对一、一对多还是多对多.
例如,你可能允许一个客户的订单量是0或多份.
为什么有的客户的订单量为0呢这取决于业务规则,你可能想要跟踪潜在客户,此类客户可能已经拿到了产品目录副本,但尚未下单.
一份订单可能由多个条目组成,每个条目都来自可用产品的子目录.
每个条目都可能被退货,第1章Oracle和SQL11但最多只能退货一次,理想情况是零退货.
图1-3所示的实体-关系图示例演示了初始数据模型.
图1-3实体-关系图这个实体-关系图示例显示了5个实体以及这些实体之间的关联.
每个实体都显示为一个方框;每个关联是一根线条,连接着两个方框,线条上有一些符号,用于详明地指示关联的实质.
例如,任何客户都可以有0份、1份或多份订单.
为此,Customers(客户)和Orders(订单)之间的连线上,在Orders一端显示了一个圆圈(代表0份)和鸦脚(代表多份).
圆圈和鸦脚指示:任何给定客户的订单数量可能是0份、1份或多份.
订单中的每一行都包含一个或多个条目.
Orders和LineItems(条目)之间有一条连线,在LineItems一端显示了一条竖线(代表1个)和鸦脚(代表多个).
任何一种产品都能作为"条目"而订购,订购量可能是0个、1个或多个.
而一个"条目"可被退货0次或1次,LineItems和Returns(退货)之间有一条连线,在Returns一端显示了一个圆圈(代表0次)和一条竖线(代表1次).
确定了初始实体集合及其关系后,可通过给每个实体添加"属性"来完善这个实体-关系图,如图1-4所示.
图1-4添加了属性的实体-关系图例如,对于每个客户,你可能想要跟踪客户的姓名和联系信息(如电子邮件地址和收件地址).
对于每个订单,你可能想要跟踪订货日期以及付款方式.
对于每个条目,你想要了解订货数量以及折扣(如果有).
再举一个例子.
假设有一家CoddCruiseLines公司,为客户提供游轮度假服务.
该公司运营游轮(Ships),给每条游轮指定一个母港.
每条游轮上都有很多供客户预订的房间(ShipCabins).
公司员工(Employees)某一时刻在其中一条游轮上工作.
图1-5是一个示例,演示了这家公司的实体-关系图.
OCAOracleDatabaseSQL认证考试指南(1Z0-071)12图1-5CoddCruiseLines公司的初始实体-关系图在这个示例中,每个港口停泊一条或多条游轮,反过来,每条游轮正好有一个母港.
每条游轮上有0个或多个员工;0个员工意味着,在为游轮安排员工前,你已经开始在数据模型中跟踪游轮;甚至在游轮构建期间、维护期间以及停运期间跟踪游轮.
另外,每条游轮包含一个或多个房间.
如果给实体添加属性,最终可能得到如图1-6所示的实体-关系图.
图1-6添加了属性的实体-关系图例如,对于每条游轮,你可能想跟踪其大小(Size)和容量(Capacity).
对于每个员工,你可能想要跟踪员工的姓名(Name)、入职日期(StartDate)和当前薪水(Salary).
如果一位员工升职,会发生什么情况需要保留过去的薪水记录吗在这个示例数据模型中未保留.
不过,你可以扩展该模型,添加"薪水历史"或类似的实体,然后给该实体添加一些属性,如薪水额度,以及这个额度对应的起始日期和终止日期;也可能记录企业中最先确定这个薪水额度的管理者.
对于现实业务流程的建模,并没有绝对的对错之分.
要根据你想捕获的信息以及使用系统的方式来确定适当的模型,最终取决于需要满足的一组实际业务需求.
数据模型就用于尝试代表这些实际的业务需求.
例如,在这个虚拟的CoddCruiseLines公司中,你要跟踪游轮的母港.
在现实中,港口数量成千上万.
要跟踪所有这些港口吗在这个业务模型中,没必要这么做.
想要捕获游轮可能抵达的每个港口吗这个业务模型未这么做,我们只想捕获母港.
不过,如果业务需求发生变化,设定的自动系统也要变化,你可以修改该模型.
这个数据模型的目的不是表示现实世界中的每种可能性,只捕获自动系统将要支持的必需子集.
1.
2.
2关系数据库现在开始使用实体-关系图捕获一些实际数据.
注意,实体-关系图是实际系统的逻辑表示.
关第1章Oracle和SQL13系数据库是实体-关系图的物理表示形式,因此需要捕获实际数据.
关系数据库通过指定实体的特性来构建实体及其关联.
在关系数据库中,需要添加主键来唯一确定每个实体的每一行.
还可能需要给一些实体添加外键,将当前实体的行与另一个实体的行关联起来.
下面分析其工作原理.
分析表1-2,其中显示了CoddCruiseLines公司的一系列游轮.
你可能使用这个表来创建数据库表.
这个表包含Ships实体的ShipID列以及多个属性.
之所以使用ShipID,是为了确保表中的每一行都有一个唯一标识符.
第一行的唯一标识符是1,第二行的唯一标识符是2,以此类推.
这个唯一标识符被称作键(key),用来标识特定游轮的记录.
ShipID列中的值唯一标识了每条游轮.
这列被称作主键(primarykey)列.
表1-2CoddCruiseLines公司的Ships表ShipIDNameSizeCapacity1CoddCrystal85520522CoddElegance95229743CoddChampion95229744CoddVictorious9522974现在假设要创建Employees表.
将创建主键EmployeeID,捕获Employees实体的所有属性,以及一个附加属性ShipID,如表1-3所示.
表1-3CoddCruiseLines的Employees表EmployeeIDNameStartDateSalaryShipID1JoeSmith2016-08-207500032MikeWest2015-12-017700043AliceLindon2017-04-02850003如果需要确定MikeWest在哪条游轮上工作,如何操作很自然,你会说是CoddVictorious游轮.
为此,首先要查看Employees表,找到MikeWest的记录,然后将该记录的ShipID值与Ships表"关联",找出ShipID为4的记录,"关联"到名为CoddVictorious的游轮.
ShipID是Employees表的外键.
一个给定表的外键指向另一个表(这里是Ships表)的主键,以指示哪些行与当前行相关.
这两个表显示了数据库表中可能包含什么样的数据.
其中的数据是关系数据库可能包含在表中的数据;关系数据库可能进行处理,将一个表的数据与另一个表中的数据关联起来.
典型的数据库包含多个表,其中很多表包含关键信息(如EmployeeID和ShipID值),用来将一个表中的行关联到另一个表中的行.
用于识别表中的唯一行的机制是"主键",你使用"外键"将一个表的数据与另一个表的数据关联起来.
主键是特定表中行的唯一标识符.
外键是第一个表的一部分(或全部)主键数据在第二个表中的副本,这样第二个表就与第一个表关联起来.
OCAOracleDatabaseSQL认证考试指南(1Z0-071)14考试要点很多考题都要求分析实体-关系图"展示",然后要求根据实体-关系图中呈现的表来回答SQL问题.
本书的自测题也会逐章增加此类题目.
练习题也会采用同样的方法.
1.
2.
3多对多关系将逻辑模型转换为典型的事务化物理模型时,一个常见的挑战是如何正确处理两个实体之间的多对多关系.
记住,两个实体之间的关系本质由业务模型的要求来定义.
在上面的CoddCruiseLines示例中,根据业务要求,只需要跟踪一名员工当前在哪条游轮上工作.
但是,如果要求发生了变化,会出现什么情况如果需要跟踪一名员工可以胜任哪些游轮上的工作,该怎么做这意味着,任意一名员工与0条或多条游轮关联,而任意一条游轮与0个或多个员工关联.
为什么是"0个或多个"这取决于业务逻辑,假定你决定在分配员工前跟踪游轮,捕获哪些员工没必要一定分配给游轮的信息.
由于这些业务规则,两个方向上都存在"0个或多个"关系.
而如果没有这些业务需求,则可能改用一对多关系.
无论任一方向是"0个或多个"还是"1个或多个"关系,这种特殊的业务方法都会导致两个实体之间的多对多关系,如图1-7所示.
图1-7多对多关系该例显示了游轮与员工之间的多对多关系,这意味着,两个方向上都存在一对多关系:可将一个员工分配到多个游轮上,可给一个游轮分配多名员工.
在实体-关系图中,多对多关系的存在是数据模型的一个重要标识.
它传递了一个消息:这个数据模型缺少一个实体.
在构建草图时,多对多关系看似不错,但在最终的物理模型中,一定没有多对多关系.
原因在于这种关系不可行.
假设尝试将上例转换为表.
尝试创建自己的表:一个是Ships表,另一个是Employees表,然后给每个表指定主键.
接下来考虑如何指定外键.
你可尝试给一个表添加外键列,然后给另一个表添加外键列.
但你无法使Ships表的每一行只列出一次,每个员工只列出一次,并用外键表示多重关联.
这么做是不可行的.
可行的办法是添加第三个实体,如图1-8所示.
两个实体之间的多对多关系始终是一个标识,指示二者之间应当添加第三个实体,第三个实体是一个本质上更抽象的实体.
此处将第三个实体命名为Roster,用它列出每次分配情况,将任何给定员工分配到任何给定的游轮,指出将员工分配到游轮的开始日期和结束日期.
这样,你可以根据需要为任何给定的游轮列出足够多的重复行,每行对应于每位指定的员工;可在另一个方向上完成同样的事情,列出每个员工在各个游轮上的工作分配,可根据需要确定数量.
图1-8转换多对多关系第1章Oracle和SQL15这是构建实体-关系图和准备构建关系数据库时的标准操作过程.
1.
2.
4数据库的规范化良好的数据库设计要求考虑数据规范化.
对数据库规范化概念的完整分析超出了本书的范围,本书的目的是帮助你为考试做准备.
但有必要了解规范化规则,这组规则将指导你如何对组成关系数据库的表集合进行设计.
最常见的规范化级别见表1-4.
表1-4规范化级别规范化级别缩写特点第一范式1NF没有重复的组,所有表都是二维的第二范式2NF在1NF的基础上,每个数据元素由一个对应的唯一标识符确定,这个唯一标识符就是主键,这个唯一标识符不是复合的,因此无法再次进行细分第三范式3NF在2NF的基础上,所有表中包含的数据均描述了主键的意图,无关的数据被放置在单独的表中Boyce-CoddBCNF在3NF的基础上略加修改,目的是去除一些可能使数据中出现逻辑不一致的结构第四范式4NF在BCNF的基础上增加一些逻辑,以确保每个多值依赖均依赖于超键(superkey)第五范式5NF在4NF的基础上,表的每个连接依赖是候选键的结果如果表是按一对多关系构建的,则数据库遵循第一范式(1NF).
例如,在上例的Ships表和Employees表中,如果我们把所有的游轮名保存到Employees表中,重复每个游轮名,列出分配给指定游轮的每个员工的每条记录,就违背了第一范式.
通过分离Ship和Employee数据,我们至少满足了第一范式的要求.
第二范式(2NF)是指没有非键属性依赖于复合键的某一部分.
第三范式(3NF)是指在数据模型中严格遵循一对多关系;也就是说,将多对多关系都转换为一对多对一(one-to-many-to-one)关系.
3NF要求主键值仅与逻辑上相关的属性关联,将其他数据(如查找数据)移到另一个表中.
如果要执行大量的数据输入和更新操作,则第三范式设计是理想之选,因为这可最大限度地减少数据重复,减少数据库中数据冲突的相关风险.
例如,如果将一个客户的地址存储在多个位置,而这个客户与组织联系时又用了新地址,你不希望出现这样的风险情形:在一个位置用了新地址,在其他位置仍用旧地址.
3NF降低(甚至杜绝)了此类风险.
1NF和2NF适用于执行大量只读操作的情形.
例如,如果需要生成报表,需要关联客户地址、客户订购历史和所订购商品,那么在不同的表中执行的查询越少,报表的生成速度就越快.
如果系统中包含数百万条记录,需要执行大量复杂的查询,而不需要添加新数据,也不需要更新现有记录,不存在数据冲突风险,那么使用1NF和2NF速度将较快.
而若存在数据冲突风险,则需要使用3NF.
考虑到以上因素,一般而言,大多数基于事务的数据库应用程序都设计为3NF.
用于支持分析和报告的数据仓库和其他应用程序通常都设计为2NF或1NF.
许多"大数据"系统都设计为2NF或1NF.
考试要点根据考试目标以及我参加考试的经验,考试中仅涉及典型的第三范式.
OCAOracleDatabaseSQL认证考试指南(1Z0-071)16大多数数据通过基于事务的系统(3NF)进入组织,然后进入数据仓库或数据湖进行分析(2NF或1NF).
出于这个原因,3NF是大多数数据的起点.
将1NF或2NF模型称为反规范化(denormalization),即遵从的规范化级别低于3NF.
通常认为"大数据"系统是反规范化系统,因为它们通常遵循1NF或2NF设计模型.
这些描述是很粗略的,不是对数据库规范化的详尽分析.
如果需要详细了解与此有关的内容,请参考OraclePress出版的关于数据库设计的其他基础书籍.
实践要点在建立每个系统的模型时,并没有统一的对错标准.
一些设计决策需要进行折中,例如重点是提高性能(响应速度)还是减少数据冗余,重点是提高效率还是提高应用程序的综合能力.
这些都是数据建模人员和SQL开发人员面对的一些挑战.
认证目标1.
031.
3解释数据库与SQL的联系关系数据库是业务系统的物理表示.
有时称其为"永久存储",意味着它用来保存在应用程序执行时生成的和捕获的信息,即使在应用程序停止执行后,它依然保存着数据——数据的"持久保存期"超出给定应用程序的运行时长.
数据库在应用程序之外保存数据,这样,任何获得授权的查询应用程序或服务都能使用这些数据.
SQL是一门行业标准语言,是一种机制,用于创建关系数据库以及与关系数据库进行交互;但SQL并非数据库本身.
SQL命令可单独使用,也可从用其他语言编写的应用程序进行调用.
Java和PHP等大多数主流的软件语言都能针对关系数据库执行SQL语句,都能将自己的数据转换用于SQL语句,将SQL语句发送给数据库进行处理,也能捕获返回的数据来执行其他处理.
开发人员的数据库用户可使用多种工具来发出SQL语句.
例如,可使用Oracle的SQL*Plus和SQLDeveloper工具来构建和执行SQL语句,从而构建数据库或与数据库交互.
这些工具发出SQL语句,并接收输出;方式与任何软件语言或其他客户端应用程序都是一样的.
SQL的读法是什么有些人将它逐个字母读出,类似ess-cue-ell.
有些人将它读作sequel.
这两种读法均可,并且都得到业界权威专家的认可.
但不要将SQL读作squeal.
我曾遇见过一位电话求职者,他声称拥有5年squeal经验,我立即拒绝了这个门外汉.
SQL是一种语言,功能是:创建数据库,并在数据库中创建对象.
在这些数据库中保存数据.
更改、分析这些数据.
将数据读取出来,并用于报表、网页或任何其他用途.
SQL命令有很多,表1-5列出了最常用的SQL命令.
表1-5中显示的每条语句都有很多子句、参数以及附加功能.
后续章节将详细分析考试中涵盖的每个命令.
第1章Oracle和SQL17表1-5一些最常用的SQL命令SQL命令描述SELECT从表中检索数据INSERT向表中添加新数据UPDATE更改表中的已有数据DELETE从表中删除已有数据CREATEobject_type创建新的数据库对象(例如表)ALTERobject_type修改现有数据库对象(例如表)的结构DROPobject_type删除已有数据库对象(例如表)可将SQL语句归纳为六种类型.
表1-6显示了OracleSQL中的六类SQL语句.
从表1-6中可看到,考试中忽略了其中一些SQL语句.
当然,你目前重点关注的是考试,因此本书只分析三种SQL语句:DDL(DataDefinitionLanguage,数据定义语言)、DML(DataManipulationLanguage,数据操纵语言)和TCL(TransactionControlLanguage,事务控制语言).
表1-6OracleSQL中的六类SQL语句SQL语句和保留字编号缩写形式SQL语句类型考试涵盖内容考试未涵盖内容1DDL数据定义语言CREATEALTER*DROPRENAMETRUNCATEGRANTREVOKEFLASHBACKPURGECOMMENTANALYZEAUDITASSOCIATESTATISTICSDISASSOCIATENOAUDIT2DML数据操纵语言SELECTINSERTUPDATEDELETEMERGECALLLOCKTABLEEXPLAINPLAN3TCL事务控制语言COMMITROLLBACKSAVEPOINTSETTRANSACTIONSETCONSTRAINT4会话控制语句ALTERSESSIONSETROLE5系统控制语句ALTERSYSTEM6嵌入式SQL语句集成到第三代语言(3GL)的任何DML、DDL或TCL*ALTERSYSTEM和ALTERSESSION语句除外,这两个语句分别属于系统控制语句和会话控制语句.
OCAOracleDatabaseSQL认证考试指南(1Z0-071)18认证目标1.
041.
4描述DDL的作用DDL包含用于构建数据库对象的SQL语句.
确切地讲,DDL语句用于:创建、修改、删除表和其他数据库对象.
为打算存储到数据库中的特定对象增加注解,并将注解与该对象关联起来.
为用户指派权限,以便用户在数据库中执行各种任务.
使用内置工具对对象进行性能分析.
下面简述考试所涵盖的DDL语句:CREATE用于创建数据库中的表、视图、索引、同义词和其他对象.
ALTER用于修改数据库中已经存在的对象的结构、名称或其他属性.
把ALTER与保留字SESSION和SYSTEM一起使用是两种例外情况.
从技术角度看,ALTERSESSION和ALTERSYSTEM并不是DDL语句,而属于另一范畴.
它们均不在考试范围之内.
DROP用于从数据库中删除之前已经通过CREATE语句创建的数据库对象.
RENAME改变已有数据库对象的名称.
TRUNCATE从数据库的某个已有的表中删除所有行(即数据).
这是一种具有特殊目的的删除行的方法,是DELETE语句的强力替代方案,因为TRUNCATE放弃了DELETE提供的恢复选项,由此换来了更高性能.
正因为如此,TRUNCATE被归类为DDL,而DELETE被归类为DML.
GRANT为用户提供"权限"或权利,以便用户在数据库中执行各种任务.
REVOKE收回先前通过GRANT语句授予用户的权限.
FLASHBACK恢复表或数据库的较早版本.
PURGE从回收站中删除数据库对象,此操作将不可撤销.
COMMENT在数据库字典中为已经创建的数据库对象增加注解.
每条DDL语句都有丰富的选项和子句.
本书将陆续列举其中大多数语句的示例.
实践要点有些SQL关键字,如CREATE,本身并不是"命令"或"语句",但在与其他保留字组合之后就成为命令,例如CREATETABLE或CREATESEQUENCE.
在实际中,有些领域专家会将CREATE称为"语句"或"命令",甚至在Oracle公司的各种形式的文档中也是如此.
但从技术角度看,还是存在区别的.
对于考试而言,这不是问题.
与此类似,术语"命令"和"语句"在Oracle文档中有时也会互换使用.
如果在SQLLanguageReferenceManual中进行一番查找,会看到许多将SQL语句称为命令的例子.
这些问题在考试中都不会涉及.
第1章Oracle和SQL19认证目标1.
051.
5描述DML的作用DML语句是那些处理对象中的数据的SQL语句.
DML语句用于添加、修改、查看和删除数据库对象(如表)中的数据.
下面简述考试所涵盖的DML语句:SELECT显示表或视图中的数据.
INSERT向数据库表中添加数据,可以直接添加,也可以通过视图添加.
UPDATE修改表中的现有数据,可以直接修改,也可以通过视图修改.
DELETE从表中删除一行或多行数据,可以直接删除,也可以通过视图删除.
MERGE在单个语句中执行INSERT、UPDATE和DELETE语句的组合.
SELECT语句相当复杂,需要占用几章的篇幅.
本章和后续章节将介绍其他DML语句.
事务控制语言除了这些DML语句,还有三条SQL语句,这些SQL语句对DML的使用非常重要.
这些语句不是DML的一部分,而属于TCL.
Oracle特别将这些语句指定为DML认证目标的内容,因此本章将对它们进行讨论.
下面是需要学习的语句:COMMIT保存当前数据库会话中执行的一组DML修改.
ROLLBACK撤销当前数据库会话中执行的一组DML修改.
SAVEPOINT在一个会话中标记一个位置,从而保留后期有选择地执行的ROLLBACK的权利,以便还原到会话中的所选位置,而非一直还原到"最近一次提交事件"的位置.
实践要点除了显式的COMMIT命令外,任何DDL语句都会引发隐式的提交操作.
换言之,如果你在表A中发出UPDATE语句,然后发出GRANT语句授权用户B访问表C,将发生隐式提交事件,虽然你尚未发出显式的COMMIT命令,但你对表A所做的更新将会提交.
认证目标1.
061.
6构建SELECT语句以从Oracle数据库表中检索数据下面分析一下简单示例.
考虑前面的表1-2中列出的游轮.
下面是一条用于创建表的有效SQL语句,此后你可在表中存储相应的信息.
CREATETABLESHIPS(SHIP_IDNUMBER,SHIP_NAMEVARCHAR2(20),CAPACITYNUMBER,LENGTHNUMBER);OCAOracleDatabaseSQL认证考试指南(1Z0-071)20上面只是呈现了一种方式,实际上,你也可添加很多选项,包括主键或外键的声明、数据过滤、存储分配以及其他选项.
本书将会介绍很多类似选项,但上面给出的命令无疑可用在OracleSQL数据库中.
下面的SQL命令可将示例记录添加到这个表中:INSERTINTOSHIPS(SHIP_ID,SHIP_NAME,CAPACITY,LENGTH)VALUES(1,'CoddCrystal',2052,855);这是一个简化版本,却是有效的命令.
它将有关一条游轮的信息记录插入新表SHIPS中.
最后,可使用如下SQL命令来显示新的SQL表中的内容:SELECTSHIP_NAME,CAPACITY,LENGTHFROMSHIPS;如果正确运行上述语句,则会得到如图1-9所示的输出(注意,图1-9显示的输出是在Oracle工具SQLDeveloper中生成的).
图1-9示例SQLSELECT语句的输出可以看到,数据已存储在表中.
SELECT语句仅显示数据,根本不会对数据进行修改.
从最简单的层面来说,这就是SQL的任务:编写语句来创建数据库对象,然后处理这些对象来存储和检索数据.
SELECT语句是十分强大的SQL语句.
只用一条语句,就可以从一个或多个表中查询数据,可以转换数据、聚合数据、连接多个表、过滤多余的数据等.
后续章节将详细分析与认证考试相关的各种SQL语句.
1.
7认证总结认证考试是限时的,题型是多选题,将测验你使用实体-关系图、代码示例等的能力,考题涉及语法的正确使用、SQL语句的合理结果、SQL各种函数和其他功能的用法等.
本书是理想的备考工具.
你可从Oracle网站下载可用的Oracle软件.
为实际的业务系统建立模型时,经常需要建立数据模型,数据模型用实体-关系图描述.
在构建关系数据库时,将实体转换为表,将实体的属性实现为表列.
使用主键唯一识别给定实体的行,使用外键建立一个表与另一个表的关系.
数据库规范化用于设计数据模型,以便提供最优的业务应用程序.
第三范式表明数据模型不存在重复数据,可使用主键来唯一地识别属性集,并将任何多对多关系全面转换为一对多组合.
SQL是最广泛使用的、用于与关系数据库交互的语言,可用于创建数据库以及与数据库交互.
可将SQL语句嵌入各种语言中,可从其他应用程序发出SQL语句.
DDL语句是用于创建数据库对象的SQL语句.
DML语句是用于处理现有数据库对象的SQL语句.
还有其他类别的SQL语句,如TCL语句.
第1章Oracle和SQL21SELECT语句是最常用的SQL语句,可用于从一个或多个表中查询数据,同时可转换(甚至聚合)所返回的数据.
1.
7.
1本章知识点回顾1.
考试概述本章提供介绍性的内容,在备考过程中,掌握这些内容是很重要的.
OracleDatabaseSQLCertifiedAssociate考试(1Z0-071)有14个认证目标种类,其中11个与SQLFundamentalsI考试(1Z0-051)的目标相同.
1Z0-071考试增加了3个目标,而且以1Z0-051考试未涵盖的目标和子目标为重点;对另外11个目标的要求也更详细.
考试包括73道题目,要求你在100分钟内完成,即平均每道题目的答题时间约82秒.
OraclePress出版的SQLLanguageReferenceManual包含的内容过于详细和深刻,远远超出了考试范围,因此不适合作为备考指南.
不过,可将其作为本书的优秀参考资料.
2.
确定实体-关系图和关系数据库之间的联系实体-关系图是现有业务的逻辑模型.
实体-关系图中的实体是业务信息系统的基础构件,会被转换为数据库中的表.
实体-关系图是业务的逻辑表示.
关系数据库是物理模型,可用于存储和处理实际数据,以支持业务流程.
3.
解释数据库与SQL之间的联系数据库持续存储信息,"持续存储"时间超过给定应用程序的执行时长.
SQL是用于与数据库交互的最常用语言.
一个或多个应用程序可向单个数据库发出SQL语句.
这些应用程序可用各种支持SQL调用的语言编写,其中包括用Java、PHP等语言编写的软件.
4.
描述DDL的作用DDL语句包括CREATE、ALTER和DROP.
DDL语句是SQL语句的子集,用于创建新的数据库对象,或更改现有数据库对象的结构,包括删除数据库对象.
5.
描述DML的作用DML语句包括SELECT、UPDATE和INSERT.
DML语句是SQL语句的子集,用于处理现有的数据库对象.
6.
构建SELECT语句从Oracle数据库表中检索数据SELECT语句是最常用的SQL语句.
SELECT语句可用于从一个表中查询数据,也可将两个或多个表连接在一起从中查询数据,它会返回逻辑上存在联系的数据.
SELECT语句可与函数和其他功能结合使用,从而以各种方式转换数据,后续章节将详细讨论.
1.
7.
2自测题下面的问题能帮助你评估对本章内容的掌握程度.
前5道题测试你对前面讨论的背景信息的掌握程度.
其余题目则开始测试你对认证考试特定目标的掌握程度.
此外,这些问题是按照考试的风OCAOracleDatabaseSQL认证考试指南(1Z0-071)22格提出的,因此可帮助你熟悉考试.
如同考试那样,这些自测题中有些为多选题,因此要认真阅读,并为每个问题选出所有正确答案.
考试概述1.
下面哪些主题不包含在SQLFundamentalsI考试中,但包含在SQLCertifiedAssociate考试中(选择所有正确答案)A.
MERGEB.
转换函数C.
FLASHBACKD.
外部表2.
如果目标是获得认证考试所要求的最低及格分数,则可更高效地学习.
A.
对B.
错3.
认证考试是定时的.
A.
对B.
错4.
本书介绍的1Z0-071考试已由Oracle公司针对以下哪些Oracle数据库版本进行了正式验证(选择所有正确答案)A.
所有版本B.
9iC.
11gD.
12c5.
哪些书籍是帮助你通过1Z0-071认证考试SQLAssociate的最佳指南(选择所有正确答案)A.
本书B.
你现在正在阅读的书C.
你手里拿着的书D.
以上答案都正确确定实体-关系图和关系数据库之间的联系6.
将实体-关系图转换为关系数据库时,常用实体来构建数据库的:A.
表B.
列C.
属性D.
关系7.
数据库中行的唯一标识符是:A.
IDB.
主键C.
主要列D.
列解释数据库与SQL之间的联系8.
下列有关SQL的哪种说法是正确的A.
是与数据库交互的最常用语言B.
是唯一可用于创建数据库的语言C.
是唯一可用于与数据库交互的语言D.
以上答案都不正确9.
可使用哪些语言来提交SQL语句以供执行(选择所有正确答案)A.
PHPB.
JavaC.
SQLDeveloperD.
SQL*Plus描述DDL的作用10.
DDL的作用之一是什么(选择最佳答案)A.
从给定的表查询数据B.
给用户授予权限C.
从数据库表中删除现有数据D.
以上答案都不正确11.
DDL的作用是什么(选择三个正确答案)A.
给数据库表添加注解B.
给数据库表添加列C.
从数据库表删除数据D.
向用户授予对数据库表的权限描述DML的作用12.
下面哪一条语句是DML语句A.
ADDB.
ALTERC.
UPDATED.
MODIFY第1章Oracle和SQL2313.
下面哪些命令可用于从表中删除数据(选择两个正确答案)A.
DELETEB.
UPDATEC.
MODIFYD.
ALTER构建SELECT语句从Oracle数据库表中检索数据14.
SELECT语句可针对什么对象进行查询(选择最佳答案)A.
只针对一个报表B.
只针对一个表C.
一个或多个报表D.
一个或多个表15.
下面哪一条不是SELECT语句的功能A.
可对检索的数据进行转换并显示结果B.
可从一个表中删除数据C.
可连接多个表的数据D.
可聚合数据库数据1.
7.
3自测题答案考试概述1.
;正确答案为A、B、C、D.
参见表1-1,表1-1列出了这两门考试所包含的主题.
2.
;正确答案为B.
尽管这是一个主观题,但Oracle公司特别对此发出了警告.
原因是通过考试的最低分数可能在不加通知的条件下变动.
:A不正确.
3.
;正确答案为A.
:B不正确.
考试是计时的,在参加考试时,你必须管理好时间.
4.
;正确答案为C和D.
这门考试针对这两个数据库版本进行了官方验证,未针对其他版本进行验证.
:A和B不正确.
考试并非针对较早Oracle数据库版本中的功能.
5.
;正确答案为A、B、C和D.
确定实体-关系图和关系数据库之间的联系6.
;正确答案为A.
表是实体的物理实现.
:B、C和D不正确.
列是实体属性的物理实现.
关系指定两个实体之间的联系.
7.
;正确答案为B.
主键是表的唯一标识符.
:A、C和D不正确.
在关系数据库的实体-关系图中,ID或主要列都不具有特定含义;你可用它们命名特定列或数据库中的其他对象,但它们本身并无特殊意义.
列是关系数据库中实体的属性.
解释数据库与SQL之间的联系8.
;正确答案为A.
SQL是与数据库交互的常用语言.
:B、C和D不正确.
为了创建数据库或与数据库交互,SQL是最常用的语言,但并非唯一语言.
9.
;正确答案为A、B、C和D.
你可从任意一个选项发出SQL语句.
描述DDL的作用10.
;正确答案为B.
GRANT语句是DDL的一部分,用于给用户授予权限.
:A、C和D不正确.
使用DML语句SELECT查询数据.
使用DML语句UPDATE或DELETE从数据库表删除数据.
UPDATE可用于删除给定行中的一列或多列数据,DELETE可用于删除整行数据.
OCAOracleDatabaseSQL认证考试指南(1Z0-071)2411.
;正确答案为A、B和D.
DDL语句可用于给表添加列或注解.
使用DDL语句添加权限.
:C不正确.
不存在从数据库表删除数据的DDL语句.
描述DML的作用12.
;正确答案为C.
UPDATE语句用于更改现有行中的数据.
:A、B和D不正确.
SQL中不存在ADD或MODIFY语句.
ALTER语句是DDL语句.
13.
;正确答案为A和B.
DELETE语句用于从给定表中删除一行或多行数据.
UPDATE语句用于更改给定表中的一行或多行数据.
:C和D不正确.
SQL中不存在MODIFY语句,ALTER语句是DDL语句.
构建SELECT语句从Oracle数据库表中检索数据14.
;正确答案为D.
SELECT语句用于查询一个或多个表.
:A、B和C不正确.
SELECT语句不用于查询报表,而用于创建报表.
SELECT语句并非仅限于查询一个表.
15.
;正确答案为B.
SELECT语句只从表中查询数据副本用于生成报表等,不能用于从表中删除数据.
作为独立语句,SELECT语句肯定不会修改它所遇到的数据.
不过,可将SELECT语句的功能嵌入其他语句(如INSERT和UPDATE)中,见本书后面的描述.
:A、C和D不正确.
SELECT语句可转换数据、连接数据和聚合数据.
第2章使用DDL语句创建和管理表认证目标2.
01主数据库对象的种类2.
02创建一个简单表2.
03查看表的结构2.
04列出各列可用的数据类型2.
05如何在创建表的同时创建约束2.
06删除列以及将列设置为UNUSED2.
07创建和使用外部表√本章知识点回顾Q&A自测题

腾讯云爆款秒杀:1C2G5M服务器38元/年,CDN流量包6元起

农历春节将至,腾讯云开启了热门爆款云产品首单特惠秒杀活动,上海/北京/广州1核2G云服务器首年仅38元起,上架了新的首单优惠活动,每天三场秒杀,长期有效,其中轻量应用服务器2G内存5M带宽仅需年费38元起,其他产品比如CDN流量包、短信包、MySQL、直播流量包、标准存储等等产品也参与活动,腾讯云官网已注册且完成实名认证的国内站用户均可参与。活动页面:https://cloud.tencent.c...

GigsGigsCloud:$16/月KVM-1GB/30GB/1TB/1.6T高防/洛杉矶CN2 GIA+AS9929

GigsGigsCloud是一家成立于2015年老牌国外主机商,提供VPS主机和独立服务器租用,数据中心包括美国洛杉矶、中国香港、新加坡、马来西亚和日本等。商家VPS主机基于KVM架构,绝大部分系列产品中国访问速度不错,比如洛杉矶机房有CN2 GIA、AS9929及高防线路等。目前Los Angeles - SimpleCloud with Premium China DDOS Protectio...

HostSailor:罗马尼亚机房,内容宽松;罗马尼亚VPS七折优惠,罗马尼亚服务器95折

hostsailor怎么样?hostsailor成立多年,是一家罗马尼亚主机商家,机房就设在罗马尼亚,具说商家对内容管理的还是比较宽松的,商家提供虚拟主机、VPS及独立服务器,今天收到商家推送的八月优惠,针对所有的产品都有相应的优惠,商家的VPS产品分为KVM和OpenVZ两种架构,OVZ的比较便宜,有这方面需要的朋友可以看看。点击进入:hostsailor商家官方网站HostSailor优惠活动...

数据库管理系统为你推荐
servererror电脑连接路由登录提示server error:401 N/A,如何处理?wordpress模板wordpress 模板和wordpress主题有什么不同aspweb服务器ASP是什么?播放flash企业信息查询系统官网怎么查企业信息是否在网上公示过支付宝账户是什么支付宝帐号,指的是什么帐号 是网营密码吗ipad代理想买个ipad,3000至4000元左右有什么好的tplink01cuteftptumblr上不去我家里的网络打不开个别网站地址栏图标网站在地址栏显示的图标,是怎么显示出来的
高防直连vps 如何查询域名备案号 主机评测 payoneer sub-process 新世界电讯 服务器怎么绑定域名 java虚拟主机 创梦 空间论坛 工信部icp备案号 四核服务器 ca187 网站在线扫描 阿里云邮箱登陆地址 摩尔庄园注册 学生服务器 服务器防御 网站防护 google搜索打不开 更多