SQL for Microsoft® Access Cecelia L. Allison & Neal A. Berkowitz Wordware Publishing, Inc. LibraryofCongressCataloging-in-PublicationData Allison,Cecelia. SQLforMicrosoftaccess/byCeceliaL.AllisonandNealA.Berkowitz. p. cm. Includesindex. ISBN-13:978-1-55622-092-0 ISBN-10:1-55622-092-8(pbk.) 1. SQL(Computerprogramlanguage). 2. MicrosoftAccess. I. Berkowitz,Neal. II.Title. QA76.73.S67A442005 005.13'3--dc22 2005017158 CIP ©2005,WordwarePublishing,Inc. AllRightsReserved 2320LosRiosBoulevard Plano,Texas75074 Nopartofthisbookmaybereproducedinanyformorby anymeanswithoutpermissioninwritingfrom WordwarePublishing,Inc. PrintedintheUnitedStatesofAmerica ISBN-13:978-1-55622-092-0 ISBN-10:1-55622-092-8 10 9 8 7 6 5 4 3 2 1 0506 MicrosoftisaregisteredtrademarkofMicrosoftCorporationintheUnitedStatesand/orothercountries. Otherbrandnamesandproductnamesmentionedinthisbookaretrademarksorservicemarksoftheir respectivecompanies.Anyomissionormisuse(ofanykind)ofservicemarksortrademarksshouldnotbe regardedasintenttoinfringeonthepropertyofothers.Thepublisherrecognizesandrespectsallmarksused bycompanies,manufacturers,anddevelopersasameanstodistinguishtheirproducts. Thisbookissoldasis,withoutwarrantyofanykind,eitherexpressorimplied,respectingthecontentsof thisbookandanydisksorprogramsthatmayaccompanyit,includingbutnotlimitedtoimpliedwarrantiesfor thebook’squality,performance,merchantability,orfitnessforanyparticularpurpose.NeitherWordware Publishing,Inc.noritsdealersordistributorsshallbeliabletothepurchaseroranyotherpersonorentitywith respecttoanyliability,loss,ordamagecausedorallegedtohavebeencauseddirectlyorindirectlybythisbook. All inquiries for volume purchases of this book should be addressed to Wordware Publishing,Inc.,attheaboveaddress.Telephoneinquiriesmaybemadebycalling: (972)423-0090 Tomyparents,WillieA.ConeyandRosaD.Coney,myloving husband,JohnF.Allison,andmydaughter,KaylaDesireeAllison. Youeachplayedaspecialroleininspiringmetoreachforthe stars,stayfocused,andworkhard.Iloveyou! CeceliaL.Allison Tomywife,Deborah,whoputsupwithmyidiosyncrasiesandis alwaysthereforme.WhenwegotmarriedshepromisedthatI wouldneverbebored,andshehasdefinitelyexceededthatprom- ise.Sheistheloveofmylifeand,whileIdon’tsayitoftenenough, Ihopethatsheknowsit. NealA.Berkowitz iii This page intentionally left blank. Contents Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Chapter1 TheRelationalDatabaseStructure . . . . . . . . . . . 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 EarlyFormsofDataStorage . . . . . . . . . . . . . . . . . . . . . . . . . 3 TheRelationalDatabaseStructure . . . . . . . . . . . . . . . . . . . . . . 4 Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Keys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 ThePlanningStage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 DataModeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 EntitiesandRelationships . . . . . . . . . . . . . . . . . . . . . . . 7 Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Client/ServerDatabases. . . . . . . . . . . . . . . . . . . . . . . . . . . 11 DatabaseManagementSystems. . . . . . . . . . . . . . . . . . . . . . . 11 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Chapter2 StructuredQueryLanguageandMicrosoftAccess . . . 15 StructuredQueryLanguage. . . . . . . . . . . . . . . . . . . . . . . . . 16 SQLVersions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 SQLComponents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 SQLSyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 ThePowerofSQLinMicrosoftAccess . . . . . . . . . . . . . . . . . . . 18 TheQueryWizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 TheQueryDesignToolandSQLView. . . . . . . . . . . . . . . . . . 19 OpeningMicrosoftAccessandSwitchingtoSQLView. . . . . . . . . . . 20 OpeningMicrosoftAccess . . . . . . . . . . . . . . . . . . . . . . . . 20 SwitchingtoSQLView . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Chapter3 CreatingTablesandInsertingRecords. . . . . . . . . 25 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 TheDataDefinitionLanguageComponent . . . . . . . . . . . . . . . . . 26 CREATETABLESyntax. . . . . . . . . . . . . . . . . . . . . . . . . 27 DataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Constraints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Example1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 NULL/NOTNULLConstraint . . . . . . . . . . . . . . . . . . . . . . 32 PRIMARYKEYConstraint. . . . . . . . . . . . . . . . . . . . . . . . 32 Example2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 v Contents (cid:1) FOREIGNKEYConstraint. . . . . . . . . . . . . . . . . . . . . . . . 34 UNIQUEConstraint . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 AddingConstraintstoExistingTables . . . . . . . . . . . . . . . . . . 36 Example3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Example4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 ConstraintSyntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 InsertingRecords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Example5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 InsertingDatawithoutSpecifyingColumnNames . . . . . . . . . . . 40 Example6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 InsertingNULLValues . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Example7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 CopyingRecordsfromOneTabletoanExistingTable . . . . . . . . . 42 Example8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 CopyingRecordsfromOneTabletoaNewTableSimultaneously . . . 43 Example9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 UpdatingRecords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Example10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 DeletingRecords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Example11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Chapter4 RetrievingRecords . . . . . . . . . . . . . . . . . . . 49 TheSELECTStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Example1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Example2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 TheORDERBYClause . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 SortinginDescendingOrder. . . . . . . . . . . . . . . . . . . . . . . 56 Example3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 SortinginAscendingOrder. . . . . . . . . . . . . . . . . . . . . . . . 57 Example4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 SortingMultipleColumns . . . . . . . . . . . . . . . . . . . . . . . . 58 Example5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 SortingUsingNumbers. . . . . . . . . . . . . . . . . . . . . . . . . . 59 Example6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Example7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 HandlingDuplicateValues. . . . . . . . . . . . . . . . . . . . . . . . . . 61 TheDISTINCTKeyword. . . . . . . . . . . . . . . . . . . . . . . . . 61 Example8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 TheDISTINCTROWKeyword. . . . . . . . . . . . . . . . . . . . . . 63 TheTOPKeyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Example9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Example10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 TheTOPPERCENTKeywords . . . . . . . . . . . . . . . . . . . . . 66 vi (cid:2) Contents Example11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Example12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 CreatinganAlias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Example13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Example14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Chapter5 FilteringRetrievedRecords. . . . . . . . . . . . . . . 73 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 TheWHEREClause. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 ComparisonOperators. . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 LogicalOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 OperatorPrecedence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 TheAND,OR,=,and<Operators . . . . . . . . . . . . . . . . . . . 77 Example1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 TheLIKEOperator. . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Example2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Example3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Example4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Example5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Example6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Example7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Example8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Example9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 TheBETWEENOperator . . . . . . . . . . . . . . . . . . . . . . . . 84 Example10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 TheINandNOTOperators. . . . . . . . . . . . . . . . . . . . . . . . 86 Example11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 TheISNULLandISNOTNULLOperators. . . . . . . . . . . . . . . 87 Example12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Chapter6 CreatingCalculatedFields . . . . . . . . . . . . . . . 91 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 OperatorsandFunctions. . . . . . . . . . . . . . . . . . . . . . . . . . . 92 ArithmeticOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Example1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 AggregateFunctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 UsingtheAVG(),FIRST(),LAST(),SUM(),MAX(), andMIN()Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Example2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 UsingtheCOUNT()Function . . . . . . . . . . . . . . . . . . . . . . 99 Example3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 StringFunctionsandOperations. . . . . . . . . . . . . . . . . . . . . . 100 vii Contents (cid:1) Useofthe+and& . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 UsingtheLEFT(),UCASE(),LEN(),andTRIM()Functions . . . . 103 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 UsingtheMID()andINSTR()Functions . . . . . . . . . . . . . . . 104 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 DateandTimeFunctions. . . . . . . . . . . . . . . . . . . . . . . . . . 105 InsertingDatesintoaTable. . . . . . . . . . . . . . . . . . . . . . . 107 Example6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 UsingtheFORMAT()Function. . . . . . . . . . . . . . . . . . . . . 108 Example7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 UsingtheDATE(),TIME(),MONTH(),DAY(), andYEAR()Functions . . . . . . . . . . . . . . . . . . . . . . . . . 110 Example8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 MiscellaneousFunctions . . . . . . . . . . . . . . . . . . . . . . . . 111 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Chapter7 GroupingData . . . . . . . . . . . . . . . . . . . . 115 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 TheGROUPBYClause . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 UsingtheGROUPBYClausewiththeORDERBYClause . . . . . . 120 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 TheHAVINGClause . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 UsingtheHAVINGClausewiththeWHEREClause . . . . . . . . . 123 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Chapter8 CreatingTableJoinsandUnions . . . . . . . . . . . 127 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 TableJoins—AnOverview . . . . . . . . . . . . . . . . . . . . . . . . 128 Qualification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 InnerJoin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 UsingtheDISTINCTROWKeyword . . . . . . . . . . . . . . . . . . 133 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 SelfJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 NestedJoin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 OuterJoins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 RightOuterJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 LeftOuterJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Example6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 viii (cid:2) Contents UNIONandUNIONALLKeywords. . . . . . . . . . . . . . . . . . . . 145 UNION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Example7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 UNIONALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Example8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Chapter9 CreatingSubqueries . . . . . . . . . . . . . . . . . 153 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 CorrelatedandNon-CorrelatedSubqueries . . . . . . . . . . . . . . 154 TheINSubquery . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 TheEXISTSSubquery . . . . . . . . . . . . . . . . . . . . . . . . . 158 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 TheANYandSOMESubqueries . . . . . . . . . . . . . . . . . . . . 161 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 TheALLSubquery . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 NestedSubqueries. . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Chapter10 CreatingViews . . . . . . . . . . . . . . . . . . . 169 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 CreatingaView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 CreatingaViewUsingtheCREATEVIEWKeywordsinSQL-92 . . . . 172 SettingtheSQLVersionforaCurrentDatabase. . . . . . . . . . . . 172 SettingtheSQLVersionastheDefaultSettingforNewDatabases. . 173 FilteringaRecordThroughaView. . . . . . . . . . . . . . . . . . . . . 174 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 UpdatingaRecordThroughaView . . . . . . . . . . . . . . . . . . . . 175 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 DeletingaView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Chapter11 TableManagementandIndexes . . . . . . . . . . 179 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 AddingaColumntoanExistingTable . . . . . . . . . . . . . . . . . . . 180 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 ChangingaColumn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 ix
Description: