SQL i Access: grundläggande begrepp, vokabulär och syntax
Applies ToAccess för Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

När du vill hämta data från en databas kan du begära data med hjälp av SQL (Structured Query Language). SQL är ett datorspråk som liknar engelska, men som databasprogram förstår. Varje fråga du kör använder SQL bakom kulisserna.

Om du förstår hur SQL fungerar kan du skapa bättre frågor, och det kan bli enklare för dig att förstå hur du åtgärdar en fråga som inte returnerar de resultat du vill.

Det här är en artikel i en uppsättning med artiklar om Access SQL. I den här artikeln beskrivs grundläggande SQL-användning när du vill välja data, med exempel på SQL-syntaxen.

I den här artikeln

Vad är SQL?

SQL är ett datorspråk som används till att arbeta med faktauppsättningar och relationerna mellan dem. Relationsbaserade databasprogram, som Microsoft Office Access, använder SQL till att bearbeta data. Till skillnad från många andra datorspråk är det inte svårt att läsa och förstå SQL, även för nybörjare. Precis som många datorspråk är SQL en internationell standard som erkänns av standardorgan som ISO och ANSI.

Du kan använda SQL till att beskriva datauppsättningar som kan hjälpa dig att svara på frågor. När du använder SQL måste du använda rätt syntax. Syntaxen är den uppsättning regler som språkelementen kan kombineras med. SQL-syntaxen är baserad på den engelska syntaxen och många element är samma som i syntaxen för Visual Basic for Applications (VBA).

Ett enkelt SQL-uttryck som till exempel returnerar en lista med efternamn för kontakter vars förnamn är Mary kan se ut så här:

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Obs!: SQL används inte bara för att hantera data, utan också för att skapa och ändra designen för databasobjekt som tabeller. Den del av SQL som används för att skapa och ändra databasobjekt kallas DDL (data definition language). Det här avsnittet omfattar inte DDL. Mer information finns i artikeln Skapa eller redigera tabeller eller index genom att använda en datadefinitionsfråga.

SELECT-uttryck

Om du vill beskriva en datauppsättning med hjälp av SQL skriver du ett SELECT-uttryck. Ett SELECT-uttryck innehåller en fullständig beskrivning av en datauppsättning som du vill hämta från en databas. Det omfattar följande:

  • vilka tabeller som innehåller datauppsättningen

  • hur data från olika källor är relaterade

  • vilka fält eller beräkningar som genererar datauppsättningen

  • villkor som data måste matcha för att ingå

  • om och hur resultatet ska sorteras.

SQL-satser

Precis som en mening så har ett SQL-uttryck satser. Varje sats utför en funktion i SQL-uttrycket. Vissa satser måste finnas med i ett SELECT-uttryck. I följande tabell listas de vanligaste SQL-satserna.

SQL-sats

Funktion

Obligatorisk

SELECT

Visar de fält som innehåller de data som du är intresserad av.

Ja

FROM

Visar de tabeller som innehåller de fält som anges i SELECT-satsen.

Ja

WHERE

Anger vilka fältvillkor som måste uppfyllas av en post för att posten ska tas med i resultatet.

Nej

ORDER BY

Anger hur resultatet ska sorteras.

Nej

GROUP BY

Visar fält som inte sammanfattas i SELECT-satsen i SQL-uttryck som innehåller mängdfunktioner.

Endast om den typen av fält förekommer

HAVING

Anger vilka villkor som gäller för fält som sammanfattas i SELECT-satsen i SQL-uttryck som innehåller mängdfunktioner.

Nej

SQL-termer

Varje SQL-sats består av termerna – ungefär som satsdelar i vanligt tal. I följande tabell listas typerna av SQL-termer.

SQL-term

Jämförbar satsdel

Definition

Exempel

identifierare

substantiv

Ett namn som du använder för att identifiera ett databasobjekt, till exempel namnet på ett fält.

Kunder.[Telefonnummer]

operator

verb eller adverb

Ett nyckelord som representerar eller modifierar en åtgärd.

AS

konstant

substantiv

Ett värde som inte ändras, till exempel ett tal eller NULL.

42

uttryck

adjektiv

En kombination av identifierare, operatorer, konstanter och funktioner som returnerar ett enda värde.

>= Produkter.[Enhetspris]

Överst på sidan

Grundläggande SQL-satser: SELECT, FROM och WHERE

En SQL-sats har följande allmänna form:

SELECT field_1FROM table_1WHERE criterion_1;

Meddelanden: 

  • Access ignorerar radbrytningar i en SQL-sats. Det är däremot bra att använda en rad för varje sats så att det blir enklare att läsa dina SQL-uttryck, både för dig själv och andra.

  • Varje SELECT-uttryck avslutas med semikolon (;). Semikolonet kan visas i slutet av den sista satsen eller på en rad i slutet av SQL-uttrycket.

Ett exempel i Access

Nedan visas hur ett SQL-uttryck för en enkel urvalsfråga kan se ut i Access:

SQL-objektfliken med ett SELECT-uttryck

1. SELECT-sats

2. FROM-sats

3. WHERE-sats

Det här SQL-exempeluttrycket betyder "Välj de data som lagras i fälten E-mail Address och Company från tabellen Contacts, där värdet i fältet City är Seattle".

Låt oss titta på exemplet en sats i taget för att se hur SQL-syntaxen fungerar.

SELECT-satsen

SELECT [E-mail Address], Company

Det här är SELECT-satsen. Den består av en operator (SELECT) följt av två identifierare ([E-mail Address] och Company).

Om en identifierare innehåller blanksteg eller specialtecken (till exempel "E-mail Address") måste den omges av hakparenteser.

En SELECT-sats måste inte ange vilka tabeller som innehåller fälten, och det går inte att ange villkor som måste uppfyllas för att data ska inkluderas.

SELECT-satsen måste alltid komma före FROM-satsen i ett SELECT-uttryck.

FROM-satsen

FROM Contacts

Det här är FROM-satsen. Den består av en operator (FROM) följt av en identifierare (Contacts).

I en FROM-sats står inte vilka fält som ska väljas.

WHERE-satsen

WHERE City="Seattle"

Det här är WHERE-satsen. Den består av en operator (WHERE) följt av ett uttryck (City="Seattle").

Obs!: Till skillnad från SELECT- och FROM-satserna är inte WHERE-satsen ett obligatoriskt element i ett SELECT-uttryck.

Du kan utföra många av de möjliga SQL-åtgärderna med satserna SELECT, FROM och WHERE. Mer information om hur du använder de här satserna finns i följande artiklar:

Överst på sidan

Sortera resultatet: ORDER BY

Precis som i Microsoft Excel kan du sortera frågeresultat i ett datablad i Access. Du kan också ange i frågan hur du vill sortera resultatet när frågan körs, med hjälp av en ORDER BY-sats. Om du använder en ORDER BY-sats är det den sista satsen i SQL-uttrycket.

En ORDER BY-sats innehåller en lista med de fält som du vill använda för sortering, i samma ordning som sorteringsåtgärderna ska tillämpas.

Antag att du vill att resultatet först ska sorteras efter värdet i fältet Company i fallande ordning och, om det finns flera poster med samma värde för Company, därefter sorteras efter värdet i fältet E-mail Address i stigande ordning. Då skulle ORDER BY-satsen se ut ungefär så här:

ORDER BY Company DESC, [E-mail Address]

Obs!: Som standard sorteras värdena i stigande ordning (A-Ö, minst till störst). Använd nyckelordet DESC om du istället vill sortera värdena i fallande ordning.

Mer information om ORDER BY-satsen finns i avsnittet ORDER BY-sats.

Överst på sidan

Arbeta med summerade data: GROUP BY och HAVING

Ibland vill du arbeta med summerade data, till exempel den sammanlagda försäljningen under en månad eller de dyraste artiklarna i ett lager. Det gör du genom att använda en mängdfunktion på ett fält i din SELECT-sats. Om du till exempel vill att frågan ska visa antalet e-postadresser för varje företag kan SELECT-satsen se ut så här:

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

Vilka mängdfunktioner du kan använda beror på typen av data i fältet eller uttrycket du vill använda. Mer information om tillgängliga mängdfunktioner finns i artikeln SQL-mängdfunktioner.

Ange fält som inte används i en mängdfunktion: GROUP BY-satsen

När du använder mängdfunktioner måste du vanligtvis också skapa en GROUP BY-sats. En GROUP BY-sats innehåller alla fält som du inte vill använda i mängdfunktionen. Om du använder mängdfunktioner för alla fält i en fråga behöver du inte skapa någon GROUP BY-sats.

En GROUP BY-sats ska stå direkt efter WHERE-satsen, eller efter FROM-satsen om det inte finns någon WHERE-sats. En GROUP BY-sats listar fälten så som de visas i SELECT-satsen.

Om vi till exempel fortsätter med föregående exempel och SELECT-satsen använder en mängdfunktion för [E-mail Address] men inte på Company skulle GROUP BY-satsen se ut så här:

GROUP BY Company

Mer information om GROUP BY-satsen finns i avsnittet GROUP BY-sats.

Begränsa aggregerade värden med hjälp ett gruppvillkor: HAVING-satsen

Om du vill begränsa resultatet med villkor, men fältet som vill använda villkoret för används i en mängdfunktion, kan du inte använda en WHERE-sats. I stället använder du en HAVING-sats. En HAVING-sats fungerar som en WHERE-sats, men används för aggregerade data.

Antag till exempel att du använder funktionen Medel (som beräknar ett medelvärde) för det första fältet i SELECT-satsen:

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

Om du vill begränsa frågeresultaten baserat på värdet för funktionen COUNT kan du inte använda ett villkor för fältet i WHERE-satsen. I stället placerar du villkoret i en HAVING-sats. Om du till exempel bara vill att frågan ska returnera rader om det finns fler än en e-postadress kopplad till företaget kan HAVING-satsen se ut så här:

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

Obs!: En fråga kan ha en WHERE-sats och en HAVING-sats, villkor för fält som inte används i en mängdfunktion läggs i WHERE-satsen och villkor för fält som används i en mängdfunktion läggs i HAVING-satsen.

Mer information om HAVING-satsen finns i avsnittet HAVING-sats.

Överst på sidan

Kombinera frågeresultat: UNION

När du vill granska alla data som returneras av flera liknande urvalsfrågor som en enda datauppsättning använder du operatorn UNION.

Med operatorn UNION kan du kombinera två SELECT-uttryck till ett. De SELECT-uttryck du kombinerar måste ha samma antal utdatafält, i samma ordning och med samma eller kompatibla datatyper. När du kör frågan kombineras data från varje uppsättning av korresponderande fält i ett utdatafält, så att frågeutdata har samma antal fält som i vart och ett av SELECT-uttrycken.

Obs!: När det gäller unionsfrågor är antal och textdatatyper kompatibla.

När du använder operatorn UNION kan du också ange om sökresultaten ska innehålla dubblettrader ifall sådana finns, genom att använda nyckelordet ALL.

Här är grundläggande SQL-syntax för en unionsfråga där två SELECT-uttryck kombineras:

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Antag till exempel att du har en tabell som heter Products och en annan som heter Services. Båda tabellerna har fält som innehåller namnet på produkten eller tjänsten, pris, garanti och information om du erbjuder produkten eller tjänsten exklusivt. Även om fältet med garantiinformation i tabellerna Products och Services heter olika saker så är den grundläggande informationen densamma (om en viss produkt eller tjänst levereras med en kvalitetsgaranti). Du kan använda en unionsfråga som den här till att kombinera de fyra fälten från de två tabellerna:

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

Mer information om hur du kombinerar SELECT-uttryck med operatorn UNION finns i Använd en unionsfråga för att kombinera flera frågor till ett resultat.

Överst på sidan

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.