•
•
•
•
•
•
•
TableofContents
Index
Reviews
Examples
ReaderReviews
Errata
Academic
MasteringOracleSQL,2ndEdition
ByAlanBeaulieu,SanjayMishra
Publisher :O'Reilly
PubDate :June2004
ISBN :0-596-00632-2
Pages :492
UpdatedtocoverOracle10g,thisnewedition
ofthehighlyregardedMasteringOracleSQL
hasastrongerfocusonpractical,expert
best-practicesandonOracle-specificSQL
techniquethananyotherbookonthe
market.Forthosewhowanttoharnessthe
untapped(andoftenoverlooked)powerof
OracleSQL,thisessentialguideforputting
OracleSQLtoworkwillproveinvaluable.
•
•
•
•
•
•
•
TableofContents
Index
Reviews
Examples
ReaderReviews
Errata
Academic
MasteringOracleSQL,2ndEdition
ByAlanBeaulieu,SanjayMishra
Publisher :O'Reilly
PubDate :June2004
ISBN :0-596-00632-2
Pages :492
Copyright
Preface
WhyWeWroteThisBook
What'sNewinOracleSQL?
ObjectivesofThisBook
PlatformandVersion
ConventionsUsedinThisBook
CommentsandQuestions
AudienceforThisBook
StructureofThisBook
UsingCodeExamples
Acknowledgments
Chapter1.IntroductiontoSQL
Section1.1.WhatIsSQL?
Section1.2.ABriefHistoryofSQL
Section1.4.DMLStatements
Section1.3.ASimpleDatabase
Section1.5.SoWhyAreThere17MoreChapters?
Chapter2.TheWHEREClause
Section2.1.LifeWithoutWHERE
Section2.2.WHEREtotheRescue
Section2.3.WHEREClauseEvaluation
Section2.4.ConditionsandExpressions
Section2.5.WHEREtoGofromHere
Chapter3.Joins
Section3.1.WhatIsaJoinQuery?
Section3.2.JoinConditions
Section3.4.JoinsandSubqueries
Section3.3.TypesofJoins
Section3.5.DMLStatementsonaJoinView
Chapter4.GroupOperations
Section4.1.AggregateFunctions
Section4.2.TheGROUPBYClause
Section4.3.TheHAVINGClause
Section4.4.NestedGroupOperations
Chapter5.Subqueries
Section5.1.WhatIsaSubquery?
Section5.2.NoncorrelatedSubqueries
Section5.3.CorrelatedSubqueries
Section5.4.InlineViews
Section5.5.SubqueryCaseStudy:TheTopNPerformers
Chapter6.HandlingTemporalData
Section6.1.TimeZones
Section6.2.TemporalDataTypesinOracle
Section6.4.GettingTemporalDataInandOutofaDatabase
Section6.3.LiteralsofTemporalTypes
Section6.5.DateandTimeFormats
Section6.6.ManipulatingTemporalData
Chapter7.SetOperations
Section7.1.SetOperators
Section7.2.PrecedenceofSetOperators
Section7.4.UsingNULLsinCompoundQueries
Section7.3.ComparingTwoTables
Section7.5.RulesandRestrictionsonSetOperations
Chapter8.HierarchicalQueries
Section8.1.RepresentingHierarchicalInformation
Section8.2.SimpleHierarchyOperations
Section8.4.ComplexHierarchyOperations
Section8.3.OracleSQLExtensions
Section8.5.RestrictionsonHierarchicalQueries
Section8.6.EnhancementsinOracleDatabase10g
Chapter9.DECODEandCASE
Section9.1.DECODE,NULLIF,NVL,andNVL2
Section9.2.TheCaseforCASE
Section9.3.DECODEandCASEExamples
Chapter10.Partitioning
Section10.1.PartitioningConcepts
Section10.2.PartitioningTables
Section10.3.PartitioningIndexes
Section10.5.SpecifyingPartitions
Section10.4.PartitioningMethods
Section10.6.PartitionPruning
Chapter11.PL/SQL
Section11.1.WhatIsPL/SQL?
Section11.2.Procedures,Functions,andPackages
Section11.3.CallingStoredFunctionsfromQueries
Section11.5.StoredFunctionsinDMLStatements
Section11.4.RestrictionsonCallingPL/SQLfromSQL
Section11.6.TheSQLInsideYourPL/SQL
Chapter12.ObjectsandCollections
Section12.1.ObjectTypes
Section12.2.CollectionTypes
Section12.3.CollectionInstantiation
Section12.5.CollectionUnnesting
Section12.7.ComparingCollections
Section12.4.QueryingCollections
Section12.6.CollectionFunctions
Section12.8.ManipulatingCollections
Section12.9.MultilevelCollections
Chapter13.AdvancedGroupOperations
Section13.1.MultipleSummaryLevels
Section13.2.PushingtheGROUPINGEnvelope
Section13.3.TheGROUPING_IDandGROUP_IDFunctions
Chapter14.AdvancedAnalyticSQL
Section14.1.AnalyticSQLOverview
Section14.2.RankingFunctions
Section14.3.WindowingFunctions
Section14.4.ReportingFunctions
Section14.5.Summary
Chapter15.SQLBestPractices
Section15.1.KnowWhentoUseSpecificConstructs
Section15.2.AvoidUnnecessaryParsing
Section15.3.ConsiderLiteralSQLforDecision-SupportSystems
Chapter16.XML
Section16.1.WhatIsXML?
Section16.2.StoringXMLData
Section16.3.GeneratingXMLDocuments
Section16.4.Summary
Chapter17.RegularExpressions
Section17.1.ElementaryRegularExpressionSyntax
Section17.2.AdvancedFunctionOptions
Section17.3.AdvancedRegularExpressionSyntax
Chapter18.ModelQueries
Section18.1.BasicElementsofaModelQuery
Section18.2.CellReferences
Section18.4.IterativeModels
Section18.3.Rules
Section18.5.ReferenceModels
AppendixA.Oracle'sOldJoinSyntax
SectionA.1.OldInnerJoinSyntax
SectionA.2.OldOuterJoinSyntax
SectionA.3.AdvantagesoftheNewJoinSyntax
Colophon
Index
Copyright©2004,2002O'ReillyMedia,Inc.
PrintedintheUnitedStatesofAmerica.
PublishedbyO'ReillyMedia,Inc.,1005GravensteinHighway
North,Sebastopol,CA95472.
O'Reillybooksmaybepurchasedforeducational,business,or
salespromotionaluse.Onlineeditionsarealsoavailablefor
mosttitles().Formoreinformation,
contactourcorporate/institutionalsalesdepartment:(800)
998-9938or
NutshellHandbook,theNutshellHandbooklogo,andthe
O'ReillylogoareregisteredtrademarksofO'ReillyMedia,Inc.
MasteringOracleSQL,theimageoflanternflies,andrelated
tradedressaretrademarksofO'ReillyMedia,Inc.
Oracle®andallOracle-basedtrademarksandlogosare
trademarksorregisteredtrademarksofOracleCorporationin
theUnitedStatesandothercountries.O'ReillyMedia,Inc.,is
independentofOracleCorporation.
Manyofthedesignationsusedbymanufacturersandsellersto
distinguishtheirproductsareclaimedastrademarks.Where
thosedesignationsappearinthisbook,andO'ReillyMedia,Inc.
wasawareofatrademarkclaim,thedesignationshavebeen
printedincapsorinitialcaps.
Whileeveryprecautionhasbeentakeninthepreparationofthis
book,thepublisherandauthorsassumenoresponsibilityfor
errorsoromissions,orfordamagesresultingfromtheuseof
theinformationcontainedherein.
Preface
SQListhelanguageforaccessingarelationaldatabase.SQL
providesasetofstatementsforstoringandretrievingdatato
andfromarelationaldatabase.Ithasgainedsteadilyin
popularityeversincethefirstrelationaldatabasewasunleashed
upontheworld.Otherlanguageshavebeenputforth,butSQL
isnowacceptedasthestandardlanguageforalmostall
relationaldatabaseimplementations,includingOracle.
SQLisdifferentfromotherprogramminglanguagesbecauseit
isnonprocedural.Unlikeprogramsinotherlanguages,where
youspecifythesequenceofstepstobeperformed,aSQL
program(moreappropriatelycalledaSQLstatement)only
expressesthedesiredresult.Theresponsibilityfordetermining
howthedatawillbeprocessedtogeneratethedesiredresultis
lefttothedatabasemanagementsystem.Thenonprocedural
natureofSQLmakesiteasiertoaccessdatainapplication
programs.
IfyouareusinganOracledatabase,SQListheinterfaceyou
usetoaccessthedatastoredinyourdatabase.SQLallowsyou
tocreatedatabasestructuressuchastables(tostoreyour
data),views,andindexes.SQLallowsyoutoinsertdatainto
thedatabase,andtoretrievethatstoreddatainadesired
format(forexample,youmightsortit).Finally,SQLallowsyou
tomodify,delete,andotherwisemanipulateyourstoreddata.
SQListhekeytoeverythingyoudowiththedatabase.It's
importanttoknowhowtogetthemostoutofthatinterface.
MasteryovertheSQLlanguageisoneofthemostvital
requirementsofadatabasedeveloperordatabase
administrator.
WhyWeWroteThisBook
Ourmotivationforwritingthisbookstemsfromourown
experienceslearninghowtousetheOracledatabaseand
Oracle'simplementationoftheSQLlanguage.Oracle'sSQL
documentationconsistsofareferencemanualthatdoesn'tgo
intodetailsaboutthepracticalusefulnessofthevariousSQL
featuresthatOraclesupports.Nordoesthemanualpresent
complex,real-lifeexamples.
WhenwelookedforhelpwithSQLinthecomputerbook
market,wefoundthattherearereallytwotypesofSQLbooks
available.Mostarethereferencetypethatdescribefeatures
andsyntax,butthatdon'ttellyouhowtoapplythatknowledge
toreal-lifeproblems.Theothertypeofbook,veryfew-innumber,discussestheapplicationofSQLinadryand
theoreticalstylewithoutusinganyparticularvendor's
implementation.Sinceeverydatabasevendorimplementstheir
ownvariationofSQL,wefindbooksbasedon"standard"SQLto
beoflimitedusefulness.
Inwritingthisbook,wedecidedtowriteapracticalbook
focusedsquarelyonOracle'sversionofSQL.Oracleisthe
market-leadingdatabase,andit'salsothedatabaseonwhich
we'vehonedourSQLexpertise.Inthisbook,wenotonlycover
themostimportantandusefulofOracle'sSQLfeatures,butwe
showwaystoapplythemtosolvespecificproblems.
What'sNewinOracleSQL?
Whenwewrotethefirsteditionofthisbook,Oracle9ihadjust
comeout,andwemanagedtocoversomeoftheinteresting
andnewfeaturesinthatreleaseofthedatabase.Now,Oracle
Database10ghasjustbeenreleased,andthereareevenmore
newfeaturestotalkabout:
Anew,MODELclausehasbeenaddedtotheSELECT
statement,enablingyoutowritequeriesthatperform
spreadsheet-likecalculationsagainstmultidimensional
arrayscreatedfromdatayouselectfromthedatabase.
Oraclehasaddedsupportforusingregularexpressions
fromSQL,andwithavengeance.Notonlycanyouuse
regularexpressionstoselectdata,butalsotomanipulate
datainvarious,usefulways.Forexample,youcanperform
regularexpressionsearch-and-replaceoperations.Noother
databasevendorthatweknowofofferssuchpowerful,
regularexpressionfunctionality.
XMLiseverywherethesedays,andthathasn'tgone
unnoticedintheworldofSQL.TheANSI/ISOfolkhave
createdtheSQL/XMLstandard,whichdefinesmechanisms
forselectingrelationaldataandpresentingitinXMLform.
Oraclesupportsthisstandard,whichinvolvesseveral,new
SQLfunctions.OraclealsonowsupportsXMLasanative
datatype.
Thesearejustthebigfeatures,which,ofcourse,wecoverin
thissecondedition.Inaddition,wecovermanysmallupdates
toOracleSQL,suchasthemultisetunionoperatorsthatenable
youtoperformsetoperationsinvolvingnestedtablecollections.
Finally,we'veworkedcarefullytogetherasateam,notonly
witheachother,butalsowithoureditor,toensurethatall
examplesinthisbookaredrawnfromasingledataset.You'll
beabletodownloadthatdatasetfromthisbook'scatalog
page.Youcanthenuseittofollowalongwithourexamples.
ObjectivesofThisBook
Thesinglemostimportantobjectiveofthisbookistohelpyou
harnessthepowerofOracleSQLtothemaximumextent
possible.Youwilllearnto:
UnderstandthefeaturesandcapabilitiesoftheSQL
language,asimplementedbyOracle.
UsecomplexSQLfeatures,suchasouterjoins,correlated
subqueries,hierarchicalqueries,groupingoperations,and
analyticalqueries.
UseDECODEandCASEtoimplementconditionallogicin
yourSQLqueries.
WriteSQLstatementsthatoperateagainstpartitions,
objects,andcollections,suchasnestedtablesandvariable
arrays.
UsethenewSQLfeaturesintroducedinOracleDatabase
10g,suchasregularexpressionsandinterrowcalculations.
Usebest-practicestowriteefficient,maintainableSQL
queries.
Onetopicthatisimportanttousandmanyofourreaders,but
whichisnotexplicitlydiscussedinthisbookisSQLtuning.
Tuningtipsaresprinkledthroughoutthebook,butwedonot
includeachapterontuningforthefollowingreasons:
Tuningisalargetopic,andreasonablecoverageofSQL
tuningwouldeasilydoubleortriplethesizeofthisbook.
TherearealreadymanyexcellentOracle-specificand
general-purposetuningbooksonthemarket,whereasthere
areveryfewbooks(inouropinion,exactlyone)that
thoroughlyexplorethefeaturesetofOracleSQL.
Inmanyways,masteryofOracle'sSQLimplementationis
themostimportanttoolinyourtuningtoolkit.
Withthisbookunderyourbelt,youwillbelesslikelytowrite
SQLstatementsthatperformbadly,andyouwillbeableto
employmultiplestrategiestoreworkexistingstatements.
AudienceforThisBook
ThisbookisforOracledevelopers,databaseadministrators,and
anyonewhoneedsaccesstodatastoredinanOracledatabase
forreportingorad-hocanalysis.Whetheryouarenewtothe
worldofdatabasesoraseasonedprofessional,ifyouuseSQL
toaccessanOracledatabase,thisbookisforyou.Whetheryou
usesimplequeriestoaccessdataorembedtheminPL/SQLor
Javaprograms,SQListhecoreofalldataaccesstasksinyour
application.KnowingthepowerandflexibilityofSQLwill
improveyourproductivity,allowingyoutogetmoredoneinless
time,andwithincreasedcertaintythattheSQLstatementsyou
writeareindeedcorrect.
PlatformandVersion
WeusedOracleDatabase10ginwritingthisbook.We've
coveredmanyofOracleDatabase10g'simportantnewSQL
features,includingregularexpressions,hierarchicalquery
features,objectandcollectionfunctionality,andinterrow
calculations.Mostoftheconcepts,syntax,andexamplesapply
toearlierreleasesofOracleaswell.Wespecificallypointout
thenewOracleDatabase10gfeatures.
StructureofThisBook
Thisbookisdividedinto18chaptersand1appendix:
Chapter1,introducestheSQLlanguageanddescribesits
briefhistory.Thischapterisprimarilyforthosereaderswho
havelittleornopriorSQLexperience.You'llfindsimple
examplesofthecoreSQLstatements(SELECT,INSERT,
UPDATE,andDELETE)andofSQL'sbasicfeatures.
Chapter2,describeswaystofilterdatainyourSQL
statements.You'lllearntorestricttheresultsofaqueryto
therowsyouwishtosee,andrestricttheresultsofadata
manipulationstatementtotherowsyouwishtomodify.
Chapter3,describesconstructsusedtoaccessdatafrom
multiple,relatedtables.Theimportantconceptsofinner
joinandouterjoinarediscussedinthischapter.
Chapter4,showsyouhowtogeneratesummary
information,suchastotalsandsubtotals,fromyourdata.
Learnhowtodefinegroupsofrows,andhowtoapply
variousaggregatefunctionstosummarizedatainthose
groups.
Chapter5,showsyouhowtousecorrelatedand
noncorrelatedsubqueriesandinlineviewstosolvecomplex
problemsthatwouldotherwiserequireproceduralcode
togetherwithmorethanonequery.
Chapter6,talksabouthandlingdateandtimeinformation
inanOracledatabase.Learnthetricksandtrapsof
queryingtime-baseddata.
Chapter7,showsyouhowtouseUNION,INTERSECT,and
MINUStocombineresultsfromtwoormoreindependent
componentqueriesintoone.
Chapter8,showsyouhowtostoreandextracthierarchical
information(suchasinanorganizationalchart)froma
relationaltable.Oracleprovidesmanyfeaturestofacilitate
workingwithhierarchicaldata,includingseveralnew
featuresintroducedinOracleDatabase10g.
Chapter9,talksabouttwoverypowerfulyetsimple
featuresofOracleSQLthatenableyoutosimulate
conditionallogicinwhatisotherwiseadeclarative
language.
Chapter10,discussestheissuesinvolvedwithcreatingand
accessingpartitionedtablesusingSQL.LearntowriteSQL
statementsthatoperateonspecificpartitionsand
subpartitions.
Chapter11,explorestheintegrationofSQLandPL/SQL.
ThischapterdescribeshowtocallPL/SQLstoredprocedures
andfunctionsfromSQLstatements,andhowtowrite
efficientSQLstatementswithinPL/SQLprograms.
Chapter12,explorestheobject-orientedaspectsofthe
Oracledatabaseserver,includingobjecttypesand
collections.
Chapter13,dealswithcomplexgroupingoperationsused
mostlyindecisionsupportsystems.Weshowyouhowto
useOraclefeaturessuchasROLLUP,CUBE,andGROUPING
SETStoefficientlygeneratevariouslevelsofsummary
informationrequiredbydecision-supportapplications.We
alsodiscussthegroupingfeaturesthatenablecomposite
andconcatenatedgroupings,includingtheGROUP_IDand
GROUPING_IDfunctions.
Chapter14,dealswithanalyticalqueriesandanalytic
functions.Learnhowtouseranking,windowing,and
reportingfunctionstogeneratedecision-support
information.
Chapter15,talksaboutbestpracticesthatyoushould
followtowriteefficientandmaintainablequeries.Learn
whichSQLconstructsarethemostefficientforagiven
situation.Forexample,wedescribewhenit'sbettertouse
WHEREinsteadofHAVINGtorestrictqueryresults.Wealso
discusstheperformanceimplicationsofusingbindvariables
vis-à-visliteralSQL.
Chapter16,exploreshowtheOracleservercanstoreXML
documents,featuresusedtonavigate,search,andextract
contentfromXMLdocuments,andfunctionsusedto
generateXMLdocumentsfromordinarytables.
Chapter17,showshowtowriteandinterpretregular
expressionsforperformingadvancedtextsearchesand
substitutions.
Chapter18,introducesthenew,MODELclause,whichlets
youmanipulaterelationaldataasifitwereabig,
multidimensional,spreadsheet(Oraclepreferstheterm
model).Modelqueriesenableyoutosolveproblemsusinga
singleSQLstatementthatpreviouslywouldhaverequired
youtodownloaddatatoathird-party,spreadsheetprogram
suchasMicrosoftExcel.
TheAppendix,describestheSQL89joinsyntax,and
Oracle'sproprietary,outer-joinsyntax.Onlythissyntaxwas
availableforjoinsuntilthereleaseofOracle9iDatabase,
whichintroducedsupportforthenewer,andbetter,SQL92
joinsyntax.
ConventionsUsedinThisBook
Thefollowingtypographicalconventionsareusedinthisbook:
Italic
Usedforfilenames,directorynames,tablenames,field
names,andexamplURLs.Itisalsousedforemphasisand
forthefirstuseofatechnicalterm.
Constantwidth
Usedforexamplesandtoshowthecontentsoffilesandthe
outputofcommands.Alsousedforcolumnnames,XML
elementnames,regularexpressions,SQLliteralsmentioned
inthetext,andfunctionnames.
Constantwidthitalic
Usedinsyntaxdescriptionstoindicateuser-defineditems.
Constantwidthbold
Indicatesuserinputinexamplesshowinganinteraction.
Alsoindicatesemphasizedcodeelementstowhichyou
shouldpayparticularattention.
Constantwidthbolditalic
UsedincodeexamplestoemphasizeaspectsoftheSQL
statements,orresults,thatareunderdiscussion.
UPPERCASE
Insyntaxdescriptions,indicateskeywords.
lowercase
Insyntaxdescriptions,indicatesuser-defineditems,such
asvariables.
[]
Insyntaxdescriptions,squarebracketsencloseoptional
items.
{}
Insyntaxdescriptions,curlybracketsencloseasetofitems
fromwhichyoumustchooseonlyone.
|
Insyntaxdescriptions,averticalbarseparatestheitems
enclosedincurlyorsquarebrackets,asin{TRUE|FALSE}.
...
Insyntaxdescriptions,ellipsesindicaterepeatingelements.
Indicatesatip,suggestion,orgeneralnote.Forexample,weusenotes
topointyoutousefulnewfeaturesinOracleDatabase10g.
Indicatesawarningorcaution.Forexample,we'lltellyouifacertain
SQLclausemighthaveunintendedconsequencesifnotusedcarefully.
UsingCodeExamples
Thisbookisheretohelpyougetyourjobdone.Ingeneral,you
mayusethecodeinthisbookinyourprogramsand
documentation.Youdonotneedtocontactusforpermission
unlessyou'rereproducingasignificantportionofthecode.For
example,writingaprogramthatusesseveralchunksofcode
fromthisbookdoesnotrequirepermission.Sellingor
distributingaCD-ROMofexamplesfromO'Reillybooksdoes
requirepermission.Answeringaquestionbycitingthisbook
andquotingexamplecodedoesnotrequirepermission.
Incorporatingasignificantamountofexamplecodefromthis
bookintoyourproduct'sdocumentationdoesrequire
permission.
Weappreciate,butdonotrequire,attribution.Anattribution
usuallyincludesthetitle,author,publisher,andISBN.For
example:"MasteringOracleSQL,SecondEdition,bySanjay
MishraandAlanBeaulieu.Copyright2004O'ReillyMedia,Inc.,
0-596-00632-2."
Ifyoufeelyouruseofcodeexamplesfallsoutsidefairuseor
thepermissiongivenabove,feelfreetocontactusat:
CommentsandQuestions
Wehavetestedandverifiedtheinformationinthisbooktothe
bestofourability,butyoumayfindthatfeatureshavechanged
orthatwehavemademistakes.Ifso,pleasenotifyusby
writingto:
O'ReillyMedia,Inc.
1005GravensteinHighwayNorth
Sebastopol,CA95472
(800)998-9938(intheUnitedStatesorCanada)
(707)829-0515(internationalorlocal)
(707)829-0104(fax)
Youcanalsosendmessageselectronically.Tobeputonthe
mailinglistorrequestacatalog,sendemailto:
Toasktechnicalquestionsorcommentonthebook,sendemail
to:
O'Reillyhasawebsiteforthisbook,whereyoucanfind
examplesanderrata(previouslyreportederrorsandcorrections
areavailableforpublicviewthere).Youcanaccessthispageat:
/>Formoreinformationaboutthisbookandothers,seethe
O'Reillywebsite:
Acknowledgments
Weareindebtedtoagreatmanypeoplewhohavecontributed
inthedevelopmentandproductionofthisbook.Weoweahuge
debtofgratitudetoJonathanGennick,theeditorofthebook.
Jonathan'svisionforthisbook,closeattentiontodetails,and
exceptionaleditingskillsarethereasonsthisbookishere
today.
Oursincerethankstoourtechnicalreviewers:DianaLorentz,
JasonBucata,TrudyPelzer,andPeterLinsley,whogenerously
gavetheirvaluabletimetoreadandcommentonadraftcopy
ofthisbook.Theircontributionshavegreatlyimprovedits
accuracy,readability,andvalue.
Thisbookcertainlywouldnothavebeenpossiblewithoutalot
ofhardworkandsupportfromtheskillfulstaffatO'Reilly,
includingEllieVolckhausenandEmmaColby,thecover
designers;DavidFutato,theinteriordesigner;JulieHawks,who
convertedthefiles;MattHutchinson,theproductioneditor;Rob
RomanoandJessamynRead,theillustrators;andSarah
Sherman,MarloweShaeffer,andClaireCloutier,whoprovided
qualitycontrol.
FromSanjay
IwouldliketothankmycoauthorAlanandmycoauthor/editor
JonathanGennickforconstantcooperationandsmooth
executionduringthefirstaswellasthesecondeditionofthis
book.
MyadventurewithOracle'sdatabasestartedintheTribology
WorkbenchprojectatTataSteel,Jamshedpur,India.Sincere
thankstomyco-workersintheTribologyWorkbenchprojectfor