Accelerated Computer Training for Working Professionals Admissions Case Orange Coast Database Associates Course (800)355-9855 or http://ocdatabases.itgo.com Orange Coast Database Associates Specializing in Microsoft Office, Access, SQL, and related technologies Classes custom designed forWorking Professionals http://www.dhdursoassociates.com San Juan Capistrano, CA (800)355-9855 AIN102 Microsoft Access Queries
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Accelerated Computer Training for Working Professionals Admissions Case
Orange Coast Database Associates Course (800)355-9855 or http://ocdatabases.itgo.com
Orange CoastDatabase Associates
Specializing in Microsoft Office,
Access, SQL, and related technologiesClasses custom designed forWorking Professionals
http://www.dhdursoassociates.com
San Juan Capistrano, CA
(800)355-9855
AIN102 Microsoft Access Queries
Admissions AIN1021
AIN102 – Access Query Design
Introduction to Access Queries forexperienced Windows users
P.O. Box 6142Laguna Niguel, CA 92607949-489-1472http://www.d2associates.com
AdmissionsAIN1022
AIN102 Contact Information
P.O. Box 6142Laguna Niguel, CA 92607949-489-1472http://[email protected]
Copyright 2001-20011 All rights reserved.
AIN102 Notes
This course is based on an earlier course,SQL200A, which was focused on using SQL inthe Access environment. As such thescreenshots still reflect SQL view as well theQuery Designer view. This is actually a plus.
AdmissionsAIN1023
AdmissionsAIN1024
Introduction (s) Facilities Course Packet (May vary by course or class)
– Student questionnaire in front– Collaterals (Map, Catalog, Etc.)– PowerPoint handouts for all sessions– Evaluation form in back– Training Certificate
AIN102 – Access Query Design
AdmissionsAIN1025
Orange Coast Database Associates
Loose association of local University instructors and ITProfessionals.
Started in 2004
Training– Open Enrollment (public classes in San Juan Capistrano using
standardized material)
– On-site (custom classes for groups)
– Private desk side training for individuals
Consulting & Programming (incl. offshore)
AdmissionsAIN1026
AdmissionsAIN1027
Quick pace for experienced windows users
Assumes some prior knowledge of Access
End-user, not programmer, oriented
Somewhat structured towards personal use foranalysis and reporting
AIN102 – Access Query Design
AdmissionsAIN1028
Select Queries– Filter Criteria
– Calculations
– Joins
– Grouping
Action Queries– Maketable
– Append
– Update
– Delete
Union
Course Topics:
AIN102 – Access Query Design
AdmissionsAIN1029
Approach:
SQL View Used in code; but helpful inunderstanding what a querydoes
Query Designer Use to construct queries
Access has many ways to accomplish tasks. Queries can beconstructed using SQL View or the Query Designer. Thiscourse focuses on the latter.
AIN102 – Access Query Design
AdmissionsAIN10210
2 Sessions
Lecture
Demo
Extensive student “hands-on”
Exercises are cumulative – laterexamples build on objects createdearlier
Course focus is Microsoft Access Query Design Queries are widely used for:
– Database administration– Enterprise application development– Data driven web sites– Retrieving and modifying data in MS Access databases
A foundation skill for eBusiness and almost all majorbusiness applications that use relational databases
4
AIN102 Module 17 Admissions AIN102 Module 17
Access Query Design and SQL
Class database will be MS Access – the SQLengine Access uses is called JET
A basic knowledge of Access is assumed
Focus of this class will be on the querydesigner, with SQL used from time-to-time toexplain concepts
AIN102 Module 18 Admissions AIN102 Module 18
Relational Database Basics
Storage
Databases
Tables
Rows
Columns
Indexes
Views
SQL interface
5
AIN102 Module 19 Admissions AIN102 Module 19
Storage
In Access one file with extension mdb. I.emydatabase.mdb.
Database splitter can be used to split it intotwo parts – a front end and a back end.
Interface to physical storage via the “JET”database engine. This is the behind-thescenes-workhorse.
AIN102 Module 110 Admissions AIN102 Module 110
Databases
In the Access world refers to all objectsstored in the mdb.– Tables
– Queries
– From
– Reports
– Macros
– Code modules
6
AIN102 Module 111 Admissions AIN102 Module 111
Relational Database Table
AIN102 Module 112 Admissions AIN102 Module 112
Sample Access Database
7
AIN102 Module 113 Admissions AIN102 Module 113
Database Relationships
AIN102 Module 114 Admissions AIN102 Module 114
Approaching Query Design
Try to build queries a step at a time
Save existing queries that are workingas you like; modify them with a newname when building a modified query
Try looking at the generated SQL codefrom time-to-time
8
AIN102 Module 115 Admissions AIN102 Module 115
Query Types
Select Action
– Update– Delete– Insert– Maketable
Special use queries– Data Definition Language (DDL)– Union– SQL pass-through
AIN102 Module 116 Admissions AIN102 Module 116
DDL
Data definition language (DDL) to create andmodify tables, etc.
– Create, alter, drop, etc.
– Must be “hand-coded” in Access
– But can be useful for database administration
Done in MS Access via SQL Specific Queries– Will not be covered in the course
9
AIN102 Module 117 Admissions AIN102 Module 117
MS Access DDL Queries
AIN102 Module 118 Admissions AIN102 Module 118
DCL
Data Control Language (DCL) to control userrights, etc.– Grant
– Revoke
– Constraints
Used primarily in enterprise databases
Can be done in Access but not covered inthis course
10
AIN102 Module 119 Admissions AIN102 Module 119
DML
Data Manipulation Language (DML)– Select Query
– Append Query
– Update Query
– Delete Query
– Maketable Query (a special type of Select)
– Union Query (really combined Selects)
MS Access Query Designer will create thesestatements “behind the scenes”
AIN102 Module 120 Admissions AIN102 Module 120
MS Access Action Queries
11
AIN102 Module 121 Admissions AIN102 Module 121
Other Access Queries
Crosstab
Pass Through – used to pass an SQLstatement directly to a back end databasew/out processing by Access
AIN102 Module 122 Admissions AIN102 Module 122
Sample Database
Before we continue…
Load the sample database if you haven’talready
12
AIN102 Module 123
Query Designer
Admissions AIN102 Module 123
Right click anywherefor SQL View
Double click or dragto add a field
Double click to add atable
AIN102 Module 124 Admissions AIN102 Module 124
SELECT Queries
Basic Syntax:
Select column-list or *
From table-list
* Means all columns
13
AIN102 Module 125 Admissions AIN102 Module 125
MS Access SELECT Query
Drag and Dropor double click
AIN102 Module 126 Admissions AIN102 Module 126
MS Access SELECT SQL
14
AIN102 Module 127 Admissions AIN102 Module 127
Simple Select Query Results
AIN102 Module 128 Admissions AIN102 Module 128
SELECT w/ Where
Filters retrieved rows
Syntax:
SELECT column-list
FROM table-list
WHERE selection-criteria
15
Admissions AIN102 Module 129
Comparison Operators
< less than
> greater than
<= less than or equal
>= greater than or equal
= equal
<> not equal
AIN102 Module 130 Admissions AIN102 Module 130
SELECT w/ WHERE
16
AIN102 Module 131 Admissions AIN102 Module 131
SELECT w/ WHERE
AIN102 Module 132 Admissions AIN102 Module 132
SELECT w/ WHERE Results
17
AIN102 Module 133 Admissions AIN102 Module 133
Complex Filters
Follows normal boolean logic
Select PatID, LastName, etc…
From patients
Where (LastName = “Thomas” orbirthdate < #1/1/95#) and city =“Corona”)
AIN102 Module 134 Admissions AIN102 Module 134
Complex Filter
AND
18
AIN102 Module 135 Admissions AIN102 Module 135
Select w/ Complex Where
AIN102 Module 136 Admissions AIN102 Module 136
Complex Filter Results
19
AIN102 Module 137 Admissions AIN102 Module 137
Special Operators
LIKE
IN
BETWEEN
IS NULL
AIN102 Module 138 Admissions AIN102 Module 138
Like (“Wild Card Matches”)
Where customer_last_name like “Jo*”– *= string of characters
Where customer_last_name like “Jo?”– ? = exactly one character
Access actually allows more sophisticated Unix stylesearch patterns as well – see help.
20
AIN102 Module 139 Admissions AIN102 Module 139
LIKE
Names ending in “S”
AIN102 Module 140 Admissions AIN102 Module 140
LIKE
Names ending in “S”
21
AIN102 Module 141 Admissions AIN102 Module 141
LIKE Results
AIN102 Module 142 Admissions AIN102 Module 142
IS NULL
Select columnnsFrom clientsWhere zip IS NULL
SQL (including JET) uses three valued logic.Must use IS NULL to test for unknowns. A null isNOT the same as blank or empty.
22
AIN102 Module 143 Admissions AIN102 Module 143
IS NULL
AIN102 Module 144 Admissions AIN102 Module 144
IS NULL
23
AIN102 Module 145 Admissions AIN102 Module 145
IS NULL Results
OK. Now try finding all patients with a blank address. Wasthe above row retrieved? Why or why not?
AIN102 Module 146 Admissions AIN102 Module 146
IN
Select *From patientsWhere lastname IN (“Smith”,“Thomas”, “Juarez”)
Note: what is inside parentheses is a list. Later wewill replace the list with a subquery whichgenerates the list items.
24
AIN102 Module 147 Admissions AIN102 Module 147
IN
AIN102 Module 148 Admissions AIN102 Module 148
IN
List of values
25
AIN102 Module 149 Admissions AIN102 Module 149
SELECT w/in IN Results
AIN102 Module 150 Admissions AIN102 Module 150
BETWEENSELECT *FROM admissionsWHERE admit_date BETWEEN#10/1/2001# and #12/31/2001#
Note: between is inclusive
26
AIN102 Module 151 Admissions AIN102 Module 151
BETWEEN
AIN102 Module 152 Admissions AIN102 Module 152
BETWEEN Results
27
AIN102 Module 153 Admissions AIN102 Module 153
Removing Duplicates
SELECT DISTINCT PatNoFROM admissions
List once each employee who has alabor ticket
Removes duplicate rows from result set
AIN102 Module 154 Admissions AIN102 Module 154
DISTINCT
28
AIN102 Module 155 Admissions AIN102 Module 155
Distinct Results
W/out Distinct With Distinct
AIN102 Module 156 Admissions AIN102 Module 156
Sorting – ORDER BY
DESC will sort in descending order
Basic syntax:
SELECT column listFROM table listWHERE selection criteriaORDER BY column list [DESC]
29
AIN102 Module 157 Admissions AIN102 Module 157
Sorting – ORDER BY
Select *From patientsWhere state in(“CA”, “OR”, “WA”)Order by birthdate desc
Example:List patients in Pacific Coast sortedby youngest to oldest
AIN102 Module 158 Admissions AIN102 Module 158
Sorting – ORDER BY
Note: modify the “select_in” query
30
AIN102 Module 159 Admissions AIN102 Module 159
Sorting – ORDER BY
AIN102 Module 160 Admissions AIN102 Module 160
Sorting – Results
31
AIN102 Module 161 Admissions AIN102 Module 161
Query/SQL Exercises
List all patient numbers, etc. for patients who co-paid more than $20; sort by co-pay amount,largest first
List diagnostics that contain b, d, or q in thediagnostic code
List the patient id’s for admissions in the fall (Sep,Oct, Nov) of 2001 and 2002
AIN102 Module 162 Admissions AIN102 Module 162
Calculated Fields
Example:Select a + b as result
Syntax:SELECT expression AS newcolumn name
Result is a “columnalias”
32
AIN102 Module 163 Admissions AIN102 Module 163
Calculated Fields
New column name
Follow name with “:”
AIN102 Module 164 Admissions AIN102 Module 164
Calculated Fields
33
AIN102 Module 165 Admissions AIN102 Module 165
Calculated Fields - Results
AIN102 Module 166 Admissions AIN102 Module 166
Concatenation
“Adds” two character fields using “&” symbol
Useful for formatting names, addresses, etc.
Example:
– Select firstname & “ “ & lastname as fullname
34
AIN102 Module 167 Admissions AIN102 Module 167
Concatenation
Sort, but don’tshow
AIN102 Module 168 Admissions AIN102 Module 168
Concatenation
35
AIN102 Module 169 Admissions AIN102 Module 169
ConcatenationSingle column with full
name, sorted by last name
Tip: handy for reports
AIN102 Module 170 Admissions AIN102 Module 170
SQL Exercises
List all the patients with a “fullname” field;sorted by last name. Add a calculated fieldwhich shows their loaded copay (copay *1.5).Show the fullname, but not the individualnames.
36
AIN102 Module 171 Admissions AIN102 Module 171
End Session 1
Next session: multi-tableoperations, subqueries, unions,action queries, indexes
1
Admissions AIN102 Module 21
AIN102
Access Query DesignModule 2
P.O. Box 6142Laguna Niguel, CA 92607949-489-1472http://www.d2associates.com
Admissions AIN102 Module 22
Module 2
Part 1– Miscellaneous Functions
Strings Dates
– Summaries (Grouping)
Part 2 – Joins,subqueries
– Inner join– Outer joins– Subqueries
Multi-valued Single-valued
• Part 3 – Unions,Action Queries,Indexes• Unions
• Maketable Query
• Delete
• Append
• Update
• Indexes
2
Admissions AIN102 Module 23
String Manipulation
Trim
Substring
UCase, LCase
Left, Right
See help for others
Admissions AIN102 Module 24
String Manipulation
3
Admissions AIN102 Module 25
String Manipulation
Admissions AIN102 Module 26
String Example
4
Admissions AIN102 Module 27
Date Functions
Numerous date functions– DatePart– DateDiff– DateAdd– Etc.
Often used:– Year– Month
Ex: where year(birthdate) = 1999
Admissions AIN102 Module 28
DateDiff How long did patients stay in weeks?
5
Admissions AIN102 Module 29
DateDiff results
Note: Access has many date functions with many options.
Admissions AIN102 Module 210
Ex: Date Function – Month()
6
Admissions AIN102 Module 211
Ex: Date Function – Month()
Admissions AIN102 Module 212
Result of Month Function
7
Admissions AIN102 Module 213
Summary Functions
Count
Sum
Min
Max
Avg
Often used in conjunctionwith grouping
Admissions AIN102 Module 214
Summary Functions in Access
Click the sum symbol
Adds a total row
8
Admissions AIN102 Module 215
Summary Functions - SyntaxBasic syntax:
SELECT function(column)FROM tableWHERE filter-conditionGROUP BY column-listHAVING group-filter
Group by all columns to left of one(s)you to want aggregate
Admissions AIN102 Module 216
Simple Column Summaries
This query counts patient admissions In the year 2001
9
Admissions AIN102 Module 217
Simple Column Summaries
Admissions AIN102 Module 218
Simple Record Count
10
Admissions AIN102 Module 219
“The COUNTS”
Count(*) – counts records
Count(fieldname) – counts non–nulloccurrences of field name
Count (distinct fieldname) – counts distinctoccurrences, but not supported in access
Admissions AIN102 Module 220
Grouping
Organizes results into summary rows, one pergroup
Groups can have sub groups which have subgroups and so on….
11
Admissions AIN102 Module 221
GROUP BY in Query Designer
Admissions AIN102 Module 222
GROUP BY Problem
Not an aggregateor group
You will see this error a lot. Not to worry. It happens to everyone!
12
Admissions AIN102 Module 223
Group By Results
Admissions AIN102 Module 224
Having
Restricts the groups returned
Operates on the groups after they have beenformed
HAVING(((Admissions.Diag_Code)
Like "a*"))
13
Admissions AIN102 Module 225
Having – SQL View
Restricts the groups returned
Operates on the groups after they have been formed
Admissions AIN102 Module 226
HAVING
14
Admissions AIN102 Module 227
HAVING Results
Admissions AIN102 Module 228
AIN102
Access Query DesignPart 2 – Joins, Subqueries
15
Admissions AIN102 Module 229
Database DesignDiagram of the database for reference in joins
Admissions AIN102 Module 230
Joins
Used to combine columns from morethan one table
Several types– Inner– Outer
Left Right
– Others (not covered) Full Outer (Not supported in Access) Cross Self Non equal
16
Admissions AIN102 Module 231
Inner Join
Pairs each row from first table withcorresponding row from second table overthe “join column” or “linking column”
The result only contains rows where there isa match over the join column in both tables
The default join in most databases
Admissions AIN102 Module 232
Inner Join Syntax
Basic SQL 92 Syntax:
SELECT column-list
FROM table1 [AS alias]
INNER JOIN table2 [AS alias]
ON join-condition
17
Admissions AIN102 Module 233
Table Aliases
Shorthand name for a table
Used in more complex queries
Select t.id, s.lnameFrom _traveler as tInner join xLU_Staff as sOn t.staffid = s.staffid
Table alias
Admissions AIN102 Module 234
Inner Join Basic SQL Example
Basic Example: Add patient names to
admissions data
Two join tables
Join condition
18
Admissions AIN102 Module 235
Inner Join Query Design
Admissions AIN102 Module 236
Inner Join Results
19
Admissions AIN102 Module 237
Inner Join over Multiple columns
Note that that the join condition can apply tomultiple columns if desired
Used with composite keysSelect ….From tablea as taInner join tableb as tbOn ta.key1 = tb.key1And ta.key2 = tb.key2
Admissions AIN102 Module 238
Joining More than Two Tables
Can join several tables in one select
Try to limit to three or four
Demonstration example
20
Admissions AIN102 Module 239
3 Table Query Results
Admissions AIN102 Module 240
More on Aliases
Can be set in QueryDesigner, too, byright clicking on atable
Useful for debuggingtop level queries aswe shall see later
21
Admissions AIN102 Module 241
Outer Joins
Left– selects all rows from the left or first table, even if no match
exists in the other table
– Widely used in commercial practice, esp. for reporting
Right– same idea but all rows from right table
Full
– all rows from both tables; not supported in Access
Admissions AIN102 Module 242
Left Outer Join
Basic SQL 92 Syntax:
SELECT column-list
FROM table1
LEFT JOIN table2
ON join-condition
22
Admissions AIN102 Module 243
Left Outer Join(Right click on relationship to edit)
Admissions AIN102 Module 244
Left Outer Join
Modify your prior inner join touse a left join
Save as qryLeft_Admit
Now run both the inner andleft joins
What is the difference?
23
Admissions AIN102 Module 245
Left Outer Join Results
Admissions AIN102 Module 246
Subqueries
One select statement embedded in another
Can be nested multiple levels deep
In Access query designer can be placed incriteria row or field row
24
Admissions AIN102 Module 247
Multi-valued Subquery
A type of subquery that compares to a list Ex: find all diagnostic codes with no admissions Commonly encountered in commercial practice
Admissions AIN102 Module 248
Multi-valued Subquery
Place subquery in criteria row
25
Admissions AIN102 Module 249
Multi-valued Subquery Result
No one was ever admitted with these diagnoses.
Admissions AIN102 Module 250
Single-valued Subquery
Subquery that returns a single value
Find all admissions with stays greater than the average stay
26
Admissions AIN102 Module 251
Single-valued Subquery
Subquery that returns a single value
Admissions AIN102 Module 252
Single-valued Subquery Result
27
Admissions AIN102 Module 253
Queries using Queries
Queries can be read just like a table
Some are updateable
Using a query as a source for another queryvery common in Access – especially forcomplicated queries
In a “back end” database such as Oracle orSQL Sever you would use a View
Admissions AIN102 Module 254
Queries using QueriesFilter the prior query ( a little on the complicated side)for the year 2001
28
Admissions AIN102 Module 255
Queries using Queries Result
Admissions AIN102 Module 256
AIN102
Access Query Design
Part 3 – Unions, Action Queries
D. H. D’Urso and Associates949-489-1472http://www.dhdursoassociates.com
29
Admissions AIN102 Module 257
Special Queries
Most are “Action Queries”
Reached through Query pull-down menu
Admissions AIN102 Module 258
Special Queries
Special action queries have distinct symbols
30
Admissions AIN102 Module 259
Admissions Database
Diagram of the database for reference in part 3
Admissions AIN102 Module 260
Data Modification Queries
SQL Action Query
INSERT Append
UPDATE Update
DELETE Delete
SELECT…INTO Maketable
31
Admissions AIN102 Module 261
Creating Action Queries
First set up the select query based on thetable you are selecting from
Test select query
Then convert to action query
When you run an action query there is noresult displayed – must look at theaffected table to see the result