Access SQL: grundlæggende begreber, terminologi og syntaks
Applies ToAccess til Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Når du vil hente data fra en database, skal bede du om dataene ved hjælp af Structured Query Language eller SQL. SQL er et computersprog, der ligner engelsk, men som databaseprogrammer forstår. Alle de forespørgsler, du kører, bruger SQL i baggrunden.

Hvis du forstår, hvordan SQL fungerer, kan det hjælpe dig med at oprette bedre forespørgsler, og det kan gøre det nemmere for dig at forstå, hvordan du reparerer en forespørgsel, der ikke returnerer de ønskede resultater.

Dette er én artikel i en række om Access SQL. I denne artikel beskrives den grundlæggende brug af SQL til at vælge data, og der anvendes eksempler til at illustrere SQL-syntaks.

I denne artikel

Hvad er SQL?

SQL er et computersprog til at arbejde med faktasæt og relationerne mellem dem. Relationsdatabaseprogrammer, f.eks. Microsoft Office Access, bruger SQL til at arbejde med data. I modsætning til mange computersprog er SQL ikke svært at læse og forstå, selv for en nybegynder. Sql er ligesom mange andre computersprog en international standard, der anerkendes af standardiseringsorganer som ISO og ANSI.

SQL bruges til at beskrive datasæt, der kan hjælpe dig med at besvare spørgsmål. Når du bruger SQL, skal du bruge den korrekte syntaks. Syntaksen er regelsættet for, hvordan elementerne i et sprog kombineres korrekt. SQL-syntaks er baseret på engelsk syntaks og anvender mange af de samme elementer som syntaksen for Visual Basic for Applications (VBA).

En enkel SQL-sætning, der henter en liste over efternavne på kontakter, hvis fornavn er Mary kan f.eks. så således ud:

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Bemærk!: SQL bruges ikke kun til at manipulere data, men også til at oprette og ændre designet af databaseobjekter, f.eks. tabeller. Den del af SQL, der bruges til at oprette og ændre databaseobjekter, kaldes DDL (Data Definition Language). Dette emne dækker ikke DDL. Du kan finde flere oplysninger i artiklen Opret eller rediger tabeller eller indekser ved hjælp af en datadefinitionsforespørgsel.

SELECT-sætninger

Du kan skrive en SELECT-sætning for at beskrive et sæt data ved hjælp af SQL. En SELECT-sætning indeholder en fuldstændig beskrivelse af et sæt data, du vil hente fra en database. Dette omfatter følgende:

  • Hvilke tabeller, der indeholder dataene.

  • Hvordan data fra forskellige kilder er relaterede.

  • Hvilke felter eller beregninger, der vil returnere dataene.

  • Kriterier, som dataene skal matche for at blive medtaget.

  • Hvorvidt og hvordan resultaterne sorteres.

SQL-delsætninger

Ligesom en almindelig sætning har en SQL-sætning delsætninger. Hver delsætning udfører en funktion for SQL-sætningen. Nogle delsætninger er påkrævede i en SELECT-sætning. I den følgende tabel vises de mest almindelige SQL-delsætninger.

SQL-delsætning

Hvad gør den

Påkrævet

SELECT

Viser de felter, der indeholder data, som kan have interesse.

Ja

FROM

Viser de tabeller, der indeholder de felter, som er angivet i SELECT-delsætningen.

Ja

WHERE

Angiver de feltkriterier, der skal opfyldes af hver post for at blive inkluderet i resultaterne.

Nej

ORDER BY

Angiver, hvordan resultaterne sorteres.

Nej

GROUP BY

I en SQL-sætning, der indeholder aggregeringsfunktioner, vises felter, som ikke er opsummeret i SELECT-delsætningen.

Kun hvis der findes sådanne felter

HAVING

I en SQL-sætning, der indeholder aggregeringsfunktioner, angives betingelser, der gælder for felter, som er opsummeret i SELECT-sætningen.

Nej

SQL-termer

Hver enkelt SQL-sætning består af termer – som kan sammenlignes med ordklasser. Følgende tabel opstiller typer af SQL-termer.

SQL-term

Kan sammenlignes med ordklassen

Definition

Eksempel

id

substantiv

Et navn, du bruger til at identificere et databaseobjekt, f.eks. navnet på et felt.

Customers.[Telefonnummer]

operator

verbum eller adverbium

Et nøgleord, der repræsenterer en handling eller ændrer en handling.

AS

konstant

substantiv

En værdi, der ikke ændrer sig, f.eks. et tal eller NULL.

42

udtryk

adjektiv

En kombination af id'er, operatorer, konstanter og funktioner, der evalueres til en enkelt værdi.

>= Products.[Unit Price]

Toppen af siden

Grundlæggende SQL-delsætninger: SELECT, FROM og WHERE

En SQL-sætning tager den generelle form:

SELECT field_1FROM table_1WHERE criterion_1;

Bemærkninger!: 

  • Access ignorerer linjeskift i en SQL-sætning. Du bør dog overveje at bruge en linje til hver delsætning for at forbedre læsbarheden af dine SQL-sætninger for din egen og andres skyld.

  • Hver SELECT-sætning slutter med et semikolon (;). Semikolonet vises enten i slutningen af den sidste delsætning eller på en selvstændig linje sidst i SQL-sætningen.

Et eksempel i Access

Følgende illustrerer, hvordan en SQL-sætning for en simpel udvælgelsesforespørgsel kunne se ud i Access:

SQL-objektfane, der viser en SELECT-sætning

1. SELECT-delsætning

2. FROM-delsætning

3. WHERE-delsætning

I dette eksempel på en SQL-sætning står der "Vælg de data, der er gemt i de felter, der hedder E-mail Address og Company, fra den tabel, der hedder Contacts, særligt de poster, hvor værdien af feltet City er Seattle".

Lad os se på eksemplet én delsætning ad gangen for at se, hvordan SQL-syntaks fungerer.

SELECT-delsætningen

SELECT [E-mail Address], Company

Dette er SELECT-delsætningen. Den består af en operator (SELECT) efterfulgt af to identifikatorer ([E-mail Address] og Company).

Hvis et id indeholder mellemrum eller specialtegn (f.eks. "E-mail Address"), skal de omsluttes af kantede parenteser.

Der behøver ikke at stå i SELECT-delsætningen, hvilke tabeller der indeholder felterne, og den kan ikke angive nogen betingelser, der skal være opfyldt af de data, der skal medtages.

SELECT-delsætningen vises altid foran FROM-delsætningen i en SELECT-sætning.

FROM-delsætningen

FROM Contacts

Dette er FROM-delsætningen. Den består af en operator (FROM) efterfulgt af et id (Contacts).

En FROM-delsætning viser ikke de felter, der skal vælges.

WHERE-delsætningen

WHERE City="Seattle"

Dette er WHERE-delsætningen. Den består af en operator (WHERE) efterfulgt af et udtryk (City="Seattle").

Bemærk!: I modsætning til SELECT- og FROM-delsætninger er WHERE-delsætningen ikke et påkrævet element i en SELECT-sætning.

Du kan udføre mange af de handlinger, som SQL giver mulighed for, ved hjælp af SELECT-, FROM- og WHERE-delsætninger. Du kan få mere at vide om, hvordan du bruger disse delsætninger, i disse artikler:

Toppen af siden

Sortering af resultaterne: ORDER BY

Ligesom i Microsoft Excel kan du i Access sortere forespørgselsresultater i et dataark. Du kan også angive i forespørgslen, hvordan du vil sortere resultaterne, når forespørgslen kører, ved hjælp af ORDER BY-delsætningen. Hvis du bruger en ORDER BY-delsætning, er det den sidste delsætning i SQL-sætningen.

En ORDER BY-delsætning indeholder en liste over de felter, du vil bruge til sortering, i samme rækkefølge, som du vil anvende sorteringshandlingerne.

Antag f.eks., at du først vil have dine resultater sorteret efter værdien i feltet Company i faldende rækkefølge, og – hvis der er poster med samme værdi for Company – dernæst sorteret efter værdierne i feltet E-mail Address i stigende rækkefølge. Så ville din ORDER BY-delsætning ligne denne:

ORDER BY Company DESC, [E-mail Address]

Bemærk!: Som standard sorterer Access værdierne i stigende rækkefølge (A-Å, mindste til største). Brug nøgleordet DESC for at sortere værdierne i faldende rækkefølge i stedet.

Hvis du vil have mere at vide om ORDER BY-delsætningen, skal du se emnet ORDER BY-delsætningen.

Toppen af siden

Arbejd med opsummerede data: GROUP BY og HAVING

Nogle gange vil du arbejde med opsummerede data, f.eks. det samlede salg i en måned eller de dyreste varer på et lager. For at gøre dette skal du anvende en samlefunktion på et felt i din SELECT-delsætning. Hvis du f.eks. vil have forespørgslen til at vise antallet af mailadresser, der er angivet for hvert firma, kan din SELECT-delsætning se således ud:

SELECT COUNT([E-mail Address]), Company

De aggregeringsfunktioner, du kan bruge, afhænger af typen data, der findes i det felt eller udtryk, du vil bruge. Hvis du vil have mere at vide om de tilgængelige aggregeringsfunktioner, skal du se artiklen SQL-aggregeringsfunktioner.

Sådan angiver du felter, der ikke bruges i en aggregeringsfunktion: GROUP BY-delsætningen

Når du bruger aggregeringsfunktioner, skal du som regel også oprette en GROUP BY-delsætning. En GROUP BY-delsætning viser alle de felter, som du ikke anvender en aggregeringsfunktion på. Hvis du anvender aggregeringsfunktioner på alle felterne i en forespørgsel, behøver du ikke at oprette GROUP BY-delsætningen.

En GROUP BY-delsætning følger umiddelbart efter WHERE-delsætningen eller FROM-delsætningen, hvis der ikke er nogen WHERE-delsætning. En GROUP BY-delsætning opstiller felterne, sådan som de vises i SELECT-delsætningen.

Hvis vi f.eks. fortsætter det forrige eksempel, og din SELECT-delsætning anvender en aggregeringsfunktion på [E-mail Address], men ikke på Company, vil din GROUP BY-delsætning se sådan ud:

GROUP BY Company

Hvis du vil have mere at vide om GROUP BY-delsætningen, skal du se emnet GROUP BY-delsætningen.

Begræns aggregeringsværdierne ved hjælp af gruppekriterier: HAVING-delsætningen

Hvis du vil bruge kriterier til at begrænse søgeresultaterne, men det felt, du vil anvende kriterier på, bruges i en aggregeringsfunktion, kan du ikke bruge en WHERE-delsætning. I stedet skal du bruge en HAVING-delsætning. HAVING-delsætningen fungerer som en WHERE-delsætning, men den bruges til aggregerede data.

Antag f.eks., at du bruger funktionen GNS (der beregner en gennemsnitsværdi) med det første felt i din SELECT-delsætning:

SELECT COUNT([E-mail Address]), Company

Hvis du vil have forespørgslen til at begrænse resultaterne baseret på værdien af den pågældende TÆL-funktion, kan du ikke bruge et kriterium for det pågældende felt i WHERE-delsætningen. I stedet skal du placere kriterierne i en HAVING-delsætning. Hvis du f.eks. kun vil have forespørgslen til at returnere rækker, hvis der er mere end én mailadresse knyttet til virksomheden, kan HAVING-delsætningen se således ud:

HAVING COUNT([E-mail Address])>1

Bemærk!: En forespørgsel kan have en WHERE-delsætning og en HAVING-delsætning – kriterier for felter, der ikke bruges i en aggregeringsfunktion, hører til i WHERE-delsætningen, og kriterier for felter, der bruges af aggregeringsfunktioner, hører til i HAVING-delsætningen.

Hvis du vil have mere at vide om HAVING-delsætningen, skal du se emnet HAVING-delsætningen.

Toppen af siden

Kombinering af forespørgselsresultater: UNION

Når du vil gennemse alle de data, der returneres af flere lignende udvælgelsesforespørgsler, samlet som et enkelt sæt, skal du bruge UNION-operatoren.

Med UNION-operatoren kan du kombinere to SELECT-sætninger i én. De SELECT-sætninger, du kombinerer, skal have det samme antal felter, de skal være i samme rækkefølge, og datatypen skal være den samme eller kompatibel. Når du kører forespørgslen, samles data fra de enkelte sæt tilsvarende felter i ét outputfelt, så forespørgslens output har samme antal felter som hver af SELECT-sætningerne.

Bemærk!: I forbindelse med en foreningsforespørgsel er datatyperne Tal og Tekst kompatible.

Når du bruger UNION-operatoren, kan du også angive, om forespørgselsresultaterne skal medtage dublerede rækker, hvis der findes nogen, ved hjælp af nøgleordet ALL.

Den grundlæggende SQL-syntaks for en foreningsforespørgsel (UNION), der kombinerer to SELECT-sætninger, er som følger:

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Antag f.eks., at du har en tabel med navnet Produkter og en anden tabel med navnet Tjenester. Begge tabeller indeholder felter, der indeholder navnet på produktet eller tjenesten, prisen, garantien eller garantiens tilgængelighed, og om du kun tilbyder produktet eller tjenesten. Selvom tabellen Produkter gemmer garantioplysninger, og tabellen Tjenester gemmer garantioplysninger, er de grundlæggende oplysninger de samme (uanset om et bestemt produkt eller en bestemt tjeneste indeholder et løfte om kvalitet). Du kan bruge en foreningsforespørgsel, f.eks. følgende, til at kombinere de fire felter fra de to tabeller:

SELECT name, price, warranty_available, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee_available, exclusive_offerFROM Services;

Du kan få mere at vide om, hvordan du kan kombinere SELECT-sætninger ved hjælp af UNION-operatoren i Kombiner resultaterne af flere udvælgelsesforespørgsler ved hjælp af en foreningsforespørgsel.

Toppen af siden

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.