Introduktion
Formålet med denne øvelse er at demonstrere, hvordan du kan skrive dine egne SQL-sætninger og køre dem fra Microsoft Access 2007, 2010, 2013 2016 eller 2019 (trinene er stort set identiske på tværs af alle versioner). Som med alle relationelle databaser kan Microsoft Access programmeres direkte ved hjælp af Structured Query Language (SQL). Selvom SQL oftest er skjult for brugere, giver MS Access for databasestuderende en hurtig og nem måde at udforske SQL og skrive nogle ret komplekse forespørgsler. Dette er især praktisk, hvis du ikke har tid eller tålmodighed til at installere SQL Server, Oracle, MySQL eller andre større relationelle databaser.
SQL-eksemplerne, der bruges i dette korte selvstudie, er baseret på de simple kunde- og kontitabeller, der er oprettet som en del af mit Microsoft Access 2007, 2010 og 2013 selvstudie.
Du ønsker måske først at køre gennem det selvstudie (eller i det mindste det første) få sektioner) for at oprette tabellerne og tilføje de nødvendige data for at få disse eksempler til at fungere.
Det næste afsnit vil give en meget kort introduktion til Structured Query Language (SQL).
The Structured Query Language (SQL)
Structured Query Language (SQL udtales "Sequel") er et deklarativt programmeringssprog, der bruges til at manipulere relationelle databasestyringssystemer (RDBMS). Det blev først introduceret i IBMs System R i slutningen af 1970'erne. I dag bruges SQL i alle større relationelle DBMS såsom Oracle, IBM DB2, Informix, Sybase, Microsoft SQL Server, MySQL, Postgres, SQLLite, Microsoft Access og mange andre. Mens hver databaseleverandør tilbyder nogle proprietære funktioner tilføjet, kan kernen i SQL bruges på stort set enhver relationel database.
Det strukturerede forespørgselssprog er opdelt i to hoveddele:
- Data Definition Language (DDL) – Bruges til at skabe (definere) datastrukturer såsom skemaer, tabeller, indekser, klynger, sekvenser samt sikre databasen
- Data Manipulation Language (DML) – Bruges til at indsætte, hente, opdatere og slette data fra tabeller.
Microsoft Access understøtter både DDL- og DML-dele af SQL. Det meste af tiden fokuserer vi på SQL Queries, der som SQL SELECT-sætninger bruges til at hente data fra en eksisterende database. Den grundlæggende syntaks for en SQL SELECT-sætning er:
SELECT column1, column2, ... columnN FROM tableA, tableB, ... tableZ WHERE condition1, condition2, ...conditionM ORDER BY column1, column2, ... columnN
Så hvis vi for eksempel antager, at vi har en tabel ved navn Kunde med kolonner som FirstName, LastName, StreetAddress, City, state og ZIP, kan vi skrive en SQL SELECT-sætning som denne:
SELECT FirstName, LastName, City, State FROM customer
I ovenstående forespørgsel beder vi om data i kun kolonnerne Fornavn, Efternavn, By og Stat, og tabellen vi får disse data fra kaldes kunde. Bemærk, at SQL-sproget ikke bekymrer sig om store eller små bogstaver. Så skriv vælg fornavn... er det samme som at skrive SELECT FIRSTNAME ... .
En lidt mere sofistikeret forespørgsel ville være, hvis vi kun ønsker at se kunder, der bor i Georgien, og vi gerne vil have resultaterne sorteret efter kundens efternavn:
SELECT FirstName, LastName, City, State FROM customer WHERE state = 'GA' ORDER BY LastName
Som du kan se, følger listen over kolonner, vi ønsker at vise, nøgleordet SELECT. Navnet på den tabel, vi forespørger på, følger søgeordet FROM, en betingelse state ='GA' følger nøgleordet WHERE, og til sidst sorteres resultaterne i kolonnen Efternavn som beskrevet af søgeordet ORDER BY.
Der er mange flere funktioner i SQL SELECT-sætningen, der involverer forespørgsel efter flere tabeller ved at "sammenføje" dem, gruppere samlinger af poster for at finde totaler, største, mindste eller gennemsnitlige værdier og udføre andre manipulationer af outputtet, som brugerne til sidst vil se. En meget mere omfattende diskussion om funktionerne i SQL kan findes på dette link.
Det næste afsnit introducerer brugen af SQL fra Query Design-visningen i MS Access.
SQL i Microsoft Access
I dette afsnit vil vi give trinene til at skrive din egen SQL i MS Access. Denne øvelse antager, at du har MS Access 2007, 2010 eller 2013 kørende med "Bank"-databasen (kunde- og kontotabeller) åben. Klik her for selvstudiet med trin til at oprette denne database.
Sådan kommer du i gang:
- opret en ny forespørgsel ved at klikke på Opret fanen og derefter klikke på Forespørgselsdesign ikon som vist nedenfor.
- Dialogboksen "Vis tabel" vises som vist nedenfor. Klik på Luk knappen for at lukke den.
- Klik på Design-fanen og klik derefter på SQL ikonet i venstre side (eller træk visningsknappen ned og vælg SQL
- På dette tidspunkt vises SQL-visningen af Query1-forespørgslen. Som standard vises nøgleordet SELECT i vinduet.
- Rediger forespørgslen for at udskrive en komplet SQL-sætning:
SELECT firstname, lastname FROM customer ORDER BY lastname
SQL-visnings-forespørgselsvinduet vises nu som nedenfor:
- På dette tidspunkt, med SQL-sætningen indtastet, kan vi udføre forespørgslen mod databasen ved at klikke på udråbstegn "Kør"-knappen.
- Resultaterne af forespørgslen vises i en dataarkvisning (som et regneark):
- For at vende tilbage for at redigere SQL-forespørgslen skal du trække menuen Vis ned og vælge SQL igen.
- Du ønsker måske også at gemme din forespørgsel. For at gøre dette skal du højreklikke på fanen med det aktuelle forespørgselsnavn:Forespørgsel1 og vælg Gem .
Der vises en dialogboks, der beder om det nye navn på forespørgslen. Indtast et nyt navn såsom:Kundenavne og klik derefter på OK for at gemme det.
- Endelig giver MS Access ikke mulighed for at gemme en forespørgsel under et nyt navn ("Gem som"). Det du i stedet kan gøre er at fremhæve navnet på forespørgslen, højreklikke og vælge Kopier højreklik derefter igen og vælg Indsæt . Du vil derefter blive bedt om det nye navn på forespørgslen.
Dernæst vil jeg præsentere nogle tricks og tips til at skrive og fejlfinde dine SQL-forespørgsler.
Skrivning og fejlretning af SQL-forespørgsler i MS Access
Nu hvor du har den grundlæggende mekanik til at skrive og køre SQL-forespørgsler, er her et par tips og tricks til fejlretning af din SQL.
Redaktører til MS Access SQL
SQL-editorvinduet i MS Access er ikke så intelligent eller let at arbejde med. En måde at arbejde med SQL på er at skrive koden i en anden editor og derefter kopiere og indsætte koden i Access for at køre den. Der findes mange forskellige teksteditorer. For eksempel i Windows vil du have Notesblok tilgængelig under Tilbehør-gruppen. Den eneste advarsel, jeg kan give her, er IKKE at bruge MS Word eller anden tekstbehandlingssoftware til at skrive din SQL. Grunden til dette er, at MS Word og andre tekstbehandlingsprogrammer vil forvandle dine enkelte og dobbelte anførselstegn til "fancy citater", som SQL ikke forstår.
For eksempel, hvis du har en WHERE-sætning såsom WHERE state ='GA'
SQL forventer, at teksten er omgivet af simple anførselstegn. MS word vil forvandle dem til et fancy indledende og afsluttende citattegn, som SQL ikke vil forstå.
Hvis du modtager en fejl, såsom Indtast parameterværdi for `GA' så vil du helt sikkert sikre dig, at din tekst er omgivet af almindelige citationstegn.
Håndtering af syntaksfejl
Syntaksfejl kan være meget frustrerende i SQL, fordi databasen ofte ikke kan lokalisere præcis, hvor problemet er i din kode. Nogle af de vigtigste fejl, som Access viser, inkluderer:
Fejltekst | Løsning | Eksempel |
---|---|---|
Indtast parameterværdi for ____________ | Oftest sker dette, når navnet på en kolonne (felt) ikke er indtastet korrekt (såsom dette tilfælde "lstname" er stavet forkert), eller et udtryk ikke kan genkendes såsom WHERE state =`GA' | |
Microsoft Access Database-motoren kan ikke finde inputforespørgslen eller tabellen :_______________ | Oftest sker dette, når navnet på en tabel ikke er indtastet korrekt i FROM-sætningen i forespørgslen. For eksempel, i dette tilfælde specificerede forespørgslen FRA kunder i stedet for FRA kunde | |
Syntaksfejl (manglende operator) i forespørgselsudtryk:______________ | I dette tilfælde mangler syntaksen for forespørgslen nogle nøgledele. For eksempel mangler "FROM"-sætningen, og derfor rapporterer Access den omtrentlige placering af, hvor problemet opstår, ved at vise forespørgslens tekst. |
I det næste afsnit vil jeg give nogle yderligere tips til, hvordan du præsenterer dine SQL-forespørgsler og resultater for et projekt eller en hjemmeopgave.
Dokumentering af dit SQL-arbejde
I dette afsnit vil jeg beskrive nogle tips til at formatere dine forespørgsler og resultater, så de præsenteres på en klar og præcis måde på dine opgaver og projekter.
Forudsætningen her er, at du kommer til at bruge et tekstbehandlingsprogram som f.eks. MS Word eller et andet tekstbehandlingsprogram, der understøtter kopiering og indsættelse af billeder og tekst.
MS Access tillader ikke, at du indsætter kommentarer i SQL-koden. Andre DBMS tillader dette, men Access er en smule mere restriktiv.
For denne øvelse skal du antage, at lektiespørgsmålet er at vise for- og efternavne på alle kunder og at bestille resultatet efter kundens efternavn.
- Indtast SQL-forespørgslen som beskrevet i det foregående afsnit, og kør den for at få resultaterne:
- I dataarkvisningen skal du klikke på den lille firkantede boks til venstre for kolonneoverskrifterne og øverst i rækkevalgsfelterne. Dette vil få hele sæt resultater til at blive fremhævet.
- Højreklik på den samme lille firkantede boks i hjørnet, og vælg Kopier fra pop op-menuen.
- Skift til MS Word (eller andet tekstbehandlingsprogram), og indsæt resultaterne på et passende sted:
Nogle andre nyttige tip, der også blev fulgt ved oprettelsen af dette opgavedokument:
- Sørg for at indtaste hele sætningen, der beskriver den forespørgsel, du løser (Sæt ikke bare "Spørgsmål 1"). For eksempel vil du måske kopiere spørgsmålet fra hjemmearbejdet og gøre det til en del af svaret.
- Når du indsætter SQL-teksten til din forespørgsel, skal du bruge en Courier New-skrifttype, så tegnene og mellemrummene er på linje. Dette gør det meget nemmere at læse.
- Indsæt resultaterne ved at bruge teknikken vist ovenfor i stedet for at bruge et skærmbillede. Dette vil ikke kun gøre dine Word-dokumentfiler mindre, men vil også komme meget tydeligt frem, når du udskriver det.
- Sørg for at skrive dit navn, klasse/kursus og afsnit på din opgave.
- For mere komplekse forespørgsler, der kan involvere underforespørgsler eller indlejrede forespørgsler, er det bedst at opstille underforespørgslerne i et indrykket for at gøre dem nemmere at læse og fejlfinde. For eksempel, i stedet for at skrive en underforespørgsel som denne:
SELECT accountnumber, balance FROM accounts WHERE balance = (SELECT MIN(balance) from accounts)
Indstil underforespørgslen langs parentesen:
SELECT accountnumber, balance FROM accounts WHERE balance = ( SELECT MIN(balance) FROM accounts )
At følge disse trin vil gøre et godt indtryk, når du afleverer dine opgaver og projekter.
Konklusioner
I denne korte vejledning dækkede vi, hvordan man arbejder med SQL ved hjælp af MS Access. SQL er et ret generisk programmeringssprog, og alt hvad du lærer, mens du skriver SQL under MS Access, kan nemt overføres til andre relationelle databaser såsom SQL Server, Oracle, Sybase osv. Besøg mit Structured Query Language (SQL) for flere noter om SQL. side med kursusnotater.
For mere introduktion og avanceret MS Access tutorial, besøg venligst Access Category på min hjemmeside.