SQL for Microsoft® Access 2nd Edition Cecelia L. Allison & Neal A. Berkowitz Wordware Publishing, Inc. LibraryofCongressCataloging-in-PublicationData Allison,CeceliaL. SQLforMicrosoftAccess/byCeceliaL.AllisonandNealA.Berkowitz.--2nded. p. cm. Includesindex. ISBN-13:978-1-59822-060-5 ISBN-10:1-59822-060-8(pbk.) 1. SQL(Computerprogramlanguage). 2. MicrosoftAccess. I. Berkowitz,Neal. II. Title. QA76.73.S67A442008 005.75'65--dc22 2008016899 CIP ©2008,WordwarePublishing,Inc. AllRightsReserved 1100SummitAvenue,Suite102 Plano,Texas75074 Nopartofthisbookmaybereproducedinanyformorby anymeanswithoutpermissioninwritingfrom WordwarePublishing,Inc. PrintedintheUnitedStatesofAmerica ISBN-13:978-1-59822-060-5 ISBN-10:1-59822-060-8 10 9 8 7 6 5 4 3 2 1 0805 AccessisatrademarkandMicrosoftisaregisteredtrademarkofMicrosoftCorporationintheUnitedStates and/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 Tomy wonderfulparents,WillieA.Coney and Rosa D.Coney,my lovinghusband,JohnF.Allison,and my sweetdaughter,Kayla DesireeAllison.Youeach played a specialroleininspiringmeto reach forthestars,stay focused,and work hard.Iloveyou! CeceliaL.Allison Tomy wife,Deborah,whoputsup with my idiosyncrasiesand is alwaysthereforme.When wegotmarried shepromised thatI would neverbebored,and shehasdefinitely exceeded thatprom- ise.Sheistheloveofmy lifeand,whileIdon’tsay itoften enough, Ihopethatsheknowsit. With specialthankstothemembersoftheMetroplexAccess Developers(MAD)group —colleaguesand friendswhoare alwaysavailable. NealA.Berkowitz iii Contents Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv 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 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 StructuredQueryLanguage. . . . . . . . . . . . . . . . . . . . . . . . . 16 SQLVersions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 SwitchingtoVersionSQL-92inMicrosoftAccess2007 . . . . . . . 17 SwitchingtoVersionSQL-92inMicrosoftAccess2003 . . . . . . . 17 SQLComponents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 SQLSyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 ThePowerofSQLinMicrosoftAccess . . . . . . . . . . . . . . . . . . . 19 TheQueryWizard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 TheQueryDesignToolandSQLView. . . . . . . . . . . . . . . . . . 20 OpeningMicrosoftAccessandSwitchingtoSQLView. . . . . . . . . . . 21 OpeningMicrosoftAccess . . . . . . . . . . . . . . . . . . . . . . . . 21 SwitchingtoSQLViewinMicrosoftAccess2007. . . . . . . . . . . . 23 SwitchingtoSQLViewinMicrosoftAccess2003. . . . . . . . . . . . 25 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Chapter3 CreatingTablesandInsertingRecords. . . . . . . . . 31 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 TheDataDefinitionLanguageComponent . . . . . . . . . . . . . . . . . 32 CREATETABLESyntax . . . . . . . . . . . . . . . . . . . . . . . . . 34 DataTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Example1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 iv (cid:1) Contents Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Example2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 NULL/NOTNULLConstraint . . . . . . . . . . . . . . . . . . . . . . 41 PRIMARYKEYConstraint. . . . . . . . . . . . . . . . . . . . . . . . 42 Example3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 FOREIGNKEYConstraint. . . . . . . . . . . . . . . . . . . . . . . . 44 UNIQUEConstraint . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 AddingConstraintstoExistingTables . . . . . . . . . . . . . . . . . . 45 Example4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Example5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 ConstraintSyntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 InsertingRecords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Example6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 InsertingDatawithoutSpecifyingColumnNames . . . . . . . . . . . 50 Example7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 InsertingNULLValues . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Example8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 CopyingRecordsfromOneTabletoanExistingTable . . . . . . . . . 51 Example9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 CopyingRecordsfromOneTabletoaNewTableSimultaneously . . . 53 Example10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 UpdatingRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 UpdateaRecordwithaTextValue. . . . . . . . . . . . . . . . . . . . 54 Example11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 UpdateaRecordwithaNewCalculatedValue. . . . . . . . . . . . . . 55 Example12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 UpdateMultipleColumns. . . . . . . . . . . . . . . . . . . . . . . . . 55 Example13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 UpdateaColumnthatContainsaDate. . . . . . . . . . . . . . . . . . 56 Example14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 DeletingRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Example15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Chapter4 RetrievingRecords . . . . . . . . . . . . . . . . . . . 61 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 TheSELECTStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Example1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Example2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 TheORDERBYClause . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 SortinginDescendingOrder . . . . . . . . . . . . . . . . . . . . . . . 69 Example3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 SortinginAscendingOrder. . . . . . . . . . . . . . . . . . . . . . . . 70 Example4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 v Contents (cid:2) SortingMultipleColumns . . . . . . . . . . . . . . . . . . . . . . . . 71 Example5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Example6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 SortingUsingNumbers. . . . . . . . . . . . . . . . . . . . . . . . . . 73 Example7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Example8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 HandlingDuplicateValues. . . . . . . . . . . . . . . . . . . . . . . . . . 74 TheDISTINCTKeyword. . . . . . . . . . . . . . . . . . . . . . . . . 74 Example9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 TheDISTINCTROWKeyword. . . . . . . . . . . . . . . . . . . . . . 75 HandlingDuplicateSubsetsoftheEntireResultCollection . . . . . . . . 76 TheTOPKeyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Example10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Example11. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 TheTOPPERCENTKeywords . . . . . . . . . . . . . . . . . . . . . 78 Example12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Example13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 CreatinganAlias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Example14. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 CreateanAliasthatContainsaSpace . . . . . . . . . . . . . . . . . . 81 Example15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 ConcatenateMultipleFieldsandCharacters. . . . . . . . . . . . . . . 82 Example16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 ConcatenateMultipleFieldsfromMultipleTables. . . . . . . . . . . . 83 Example17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Chapter5 FilteringRetrievedRecords. . . . . . . . . . . . . . . 87 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 TheWHEREClause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 ComparisonOperators. . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 LogicalOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 OperatorPrecedence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 TheAND,OR,=,and<Operators . . . . . . . . . . . . . . . . . . . 91 Example1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 TheLIKEOperator. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Example2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Example3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Example4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Example5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Example6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Example7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Example8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 vi (cid:1) Contents Example9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 TheBETWEENOperator . . . . . . . . . . . . . . . . . . . . . . . . 99 Example10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 TheINandNOTOperators . . . . . . . . . . . . . . . . . . . . . . . 100 Example11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Example12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 TheISNULLandISNOTNULLOperators . . . . . . . . . . . . . . 102 Example13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Chapter6 CreatingCalculatedFields . . . . . . . . . . . . . . 105 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 OperatorsandFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . 106 ArithmeticOperators. . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 UseanArithmeticOperatorwithSELECT. . . . . . . . . . . . . . . 110 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 UseanArithmeticOperatorintheWHEREclause . . . . . . . . . . 111 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 AggregateFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 UsingtheAVG(),FIRST(),LAST(),SUM(),MAX(),and MIN()Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 UsingtheCOUNT()Function . . . . . . . . . . . . . . . . . . . . . 114 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 StringFunctionsandOperations . . . . . . . . . . . . . . . . . . . . . . 115 Useofthe+and& . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 UsingtheLEFT(),UCASE(),LEN(),andTRIM()Functions . . . . 118 Example6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 UsingtheMID()andINSTR()Functions . . . . . . . . . . . . . . . 120 Example7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 DateandTimeFunctions. . . . . . . . . . . . . . . . . . . . . . . . . . 122 InsertingDatesintoaTable. . . . . . . . . . . . . . . . . . . . . . . 124 Example8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 UsingtheFORMAT()Function. . . . . . . . . . . . . . . . . . . . . 125 Example9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 UsingtheDATE(),TIME(),MONTH(),DAY(),andYEAR() Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Example10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 MiscellaneousFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . 128 UsingtheCCUR()Function . . . . . . . . . . . . . . . . . . . . . . 129 Example11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 vii Contents (cid:2) Chapter7 GroupingData . . . . . . . . . . . . . . . . . . . . 133 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 TheGROUPBYClause. . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 UsingtheGROUPBYClausewiththeORDERBYClause . . . . . . 138 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 TheHAVINGClause . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 UsingtheHAVINGClausewiththeWHEREClause . . . . . . . . . 142 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Chapter8 CreatingTableJoinsandUnions . . . . . . . . . . . 145 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 TableJoins—AnOverview . . . . . . . . . . . . . . . . . . . . . . . . 146 Qualification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 InnerJoin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 UsingtheDISTINCTROWKeyword . . . . . . . . . . . . . . . . . . 152 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 SelfJoin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 NestedJoin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 OuterJoins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 RightOuterJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 LeftOuterJoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Example6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 CreateaJointhatContainsanAggregateFunction . . . . . . . . . 165 Example7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 UNIONandUNIONALLKeywords. . . . . . . . . . . . . . . . . . . . 167 UNION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Example8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 UNIONALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Example9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Chapter9 CreatingSubqueries . . . . . . . . . . . . . . . . . 175 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 CorrelatedandNon-CorrelatedSubqueries . . . . . . . . . . . . . . 176 TheINSubquery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 TheEXISTSSubquery . . . . . . . . . . . . . . . . . . . . . . . . . 180 viii (cid:1) Contents Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 TheANYandSOMESubqueries . . . . . . . . . . . . . . . . . . . . 183 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 TheALLSubquery . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 NestedSubqueries. . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 UsingaSubquerytoFindtheSecondHighestValue. . . . . . . . . . 189 Example6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Chapter10 CreatingViews. . . . . . . . . . . . . . . . . . . . 191 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 CreatingaView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 CreatingaViewUsingtheCREATEVIEWKeywordsinSQL-92 . . . . 194 CreateaViewthatContainsaComplexJoin . . . . . . . . . . . . . . 195 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 QuerytheCustomersTotalTransactionsView . . . . . . . . . . . . . 196 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 FilteringaRecordthroughaView . . . . . . . . . . . . . . . . . . . . . 197 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 UpdatingaRecordthroughaView. . . . . . . . . . . . . . . . . . . . . 198 Example6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 DeletingaView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Example7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Chapter11 TableManagementandIndexes . . . . . . . . . . 201 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 AddingaColumntoanExistingTable . . . . . . . . . . . . . . . . . . . 202 Example1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 ChangingaColumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Example2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 SettingaDefaultValueforaColumn. . . . . . . . . . . . . . . . . . . . 205 Example3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 RemovingaColumnfromaTable . . . . . . . . . . . . . . . . . . . . . 206 Example4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 RemovingaTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 ImprovingDataRetrievalTimeUsingIndexes . . . . . . . . . . . . . . 207 IndexOptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 CreatinganIndex . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Example5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 IndexinginDescendingOrder. . . . . . . . . . . . . . . . . . . . . . 210 ix
Description: