Access SQL: basisbegrippen, woordenlijst en syntaxis
Applies ToAccess voor Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Wanneer u gegevens wilt ophalen uit een database, doet u dit met behulp van Structured Query Language, of SQL. SQL is een computertaal die sterk lijkt op gewoon Engels, maar die wordt begrepen door databaseprogramma's. Elke query die u uitvoert, maakt achter de schermen gebruik van SQL.

Als u weet hoe SQL werkt, kunt u betere query's maken. Bovendien is het dan vaak eenvoudiger om een query aan te passen die niet helemaal het juiste resultaat oplevert.

Dit artikel maakt deel uit van een reeks artikelen over Access SQL. In dit artikel wordt het basisgebruik van SQL voor het selecteren van gegevens beschreven en worden voorbeelden gebruikt om de SQL-syntaxis te illustreren.

In dit artikel

Wat is SQL?

SQL is een computertaal voor het werken met feitenverzamelingen en de relaties tussen die verzamelingen. Relationele databaseprogramma's, zoals Microsoft Office Access, gebruiken SQL om te werken met gegevens. In tegenstelling tot veel andere computertalen, is SQL niet moeilijk om te lezen en te begrijpen, zelfs niet voor beginners. Net als veel computertalen is SQL een internationale standaard die wordt erkend door standaarden zoals ISO en ANSI.

U gebruikt SQL om sets gegevens te beschrijven die kunnen helpen om bepaalde vragen te beantwoorden. Wanneer u SQL gebruikt, moet u de juiste syntaxis gebruiken. Syntaxis verwijst naar de set regels waarmee de elementen van een taal correct kunnen worden gecombineerd. De SQL-syntaxis is gebaseerd op de syntaxis van de Engelse taal en bevat veel elementen die ook worden gebruikt in de syntaxis van Visual Basic for Applications (VBA).

Hieronder ziet u bijvoorbeeld een eenvoudige SQL-instructie waarmee een lijst met achternamen wordt opgehaald van contactpersonen met de voornaam Mary:

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Opmerking: SQL kan niet alleen worden gebruikt voor het manipuleren van gegevens, maar ook voor het maken en aanpassen van het ontwerp van databaseobjecten, zoals tabellen. Het onderdeel van SQL dat wordt gebruikt voor het maken en wijzigen van databaseobjecten, wordt DDL (Data Definition Language) genoemd. DDL komt niet aan bod in dit onderwerp. Zie voor meer informatie het artikel Tabellen of indexen maken of wijzigen met een definitiequery.

SELECT-instructies

Als u een set gegevens wilt beschrijven met behulp van SQL, schrijft u een SELECT-instructie. Een SELECT-instructie bevat een gedetailleerde beschrijving van een set gegevens die u wilt ophalen uit een database. De beschrijving bevat deze informatie:

  • In welke tabellen de gegevens zijn opgeslagen.

  • Hoe de gegevens uit verschillende bronnen zijn gerelateerd.

  • Welke velden of berekeningen de gegevens opleveren.

  • Criteria waaraan gegevens moeten voldoen om te worden geretourneerd.

  • Of en hoe de resultaten moeten worden gesorteerd.

SQL-componenten

Net zoals een zin bestaat een SQL-instructie uit componenten. Elke component voert een functie uit voor de SQL-instructie. Sommige componenten zijn vereist in een SELECT-instructie. De volgende tabel geeft een overzicht van de belangrijkste SQL-componenten.

SQL-component

Resultaat

Vereist

SELECT

Vermelding van de velden die de gewenste gegevens bevatten.

Ja

FROM

Vermelding van de tabellen met de velden die in de SELECT-component worden vermeld.

Ja

WHERE

Aanduiding van veldcriteria waaraan moet worden voldaan door elke record die in de resultaten moet worden opgenomen.

Nee

ORDER BY

Aanduiding hoe de resultaten worden gesorteerd.

Nee

GROUP BY

In een SQL-instructie met statistische functies vermelding van de velden die niet in de SELECT-component worden samengevat.

Alleen als er sprake is van dergelijke velden

HAVING

In een SQL-instructie met statistische functies vermelding van de voorwaarden die gelden voor velden die in de SELECT-component worden samengevat.

Nee

SQL-termen

Elke SQL-component is opgebouwd uit termen, vergelijkbaar met woordsoorten. In de volgende tabel ziet u de typen SQL-termen.

SQL-term

Vergelijkbare woordsoort

Definitie

Voorbeeld

aanduiding

zelfstandig naamwoord

Een naam waarmee een databaseobject wordt aangeduid, zoals de naam van een veld.

Klanten.[Telefoonnummer]

operator

werkwoord of bijwoord

Een sleutelwoord waarmee een actie wordt aangeduid of gewijzigd.

AS

constante

zelfstandig naamwoord

Een waarde die niet wordt gewijzigd, zoals een getal of NULL.

42

expressie

bijvoeglijk naamwoord

Een combinatie van aanduidingen, operators, constanten en functies die leidt tot één enkele waarde.

>= Producten.[Prijs per eenheid]

Naar boven

Basiscomponenten van SQL: SELECT, FROM en WHERE

Een SQL-instructie heeft deze algemene notatie:

SELECT field_1FROM table_1WHERE criterion_1;

Notities: 

  • Regeleinden in een SQL-instructie worden genegeerd in Access. Het kan echter handig zijn om elke component op een aparte regel te plaatsen om zo de leesbaarheid van uw SQL-instructies te verbeteren, niet alleen voor uzelf maar ook voor anderen.

  • Elke SELECT-instructie eindigt op een puntkomma (;). Deze staat aan het einde van de laatste component of op een afzonderlijke regel aan het einde van de SQL-instructie.

Een voorbeeld in Access

Hieronder ziet u een voorbeeld van een eenvoudige SELECT-instructie van SQL in Access:

SQL-objecttabblad met een SELECT-instructie

1. SELECT-component

2. FROM-component

3. WHERE-component

Deze SQL-instructie wordt als volgt geïnterpreteerd: 'Selecteer de gegevens die zijn opgeslagen in de velden E-mail Address en Company in de tabel met de naam Contacts, maar alleen voor records waarvan het veld City de waarde Seattle bevat'.

Laten we de SQL-syntaxis eens nader bestuderen door de componenten van dit voorbeeld één voor één te bespreken.

De SELECT-component

SELECT [E-mail Address], Company

Dit is de SELECT-component. Deze bestaat uit een operator (SELECT), gevolgd door twee aanduidingen ([E-mail Address] en Company).

Als een aanduiding spaties of speciale tekens bevat (zoals 'E-mail Address'), moet u de aanduiding tussen vierkante haken zetten.

Een SELECT-component hoeft niet te verwijzen naar de tabellen met de velden en kan niet de voorwaarden opgeven waaraan moet worden voldaan door de geretourneerde gegevens.

De SELECT-component staat altijd vóór de FROM-component in een SELECT-instructie.

De FROM-component

FROM Contacts

Dit is de FROM-component. Deze bestaat uit een operator (FROM), gevolgd door een aanduiding (Contacts).

Een FROM-component bevat niet de velden die moeten worden geselecteerd.

De WHERE-component

WHERE City="Seattle"

Dit is de WHERE-component. Deze component bestaat uit een operator (WHERE), gevolgd door een expressie (City="Seattle").

Opmerking: In tegenstelling tot de componenten SELECT en FROM, is de WHERE-component geen vereist element van een SELECT-instructie.

SELECT-, FROM- en WHERE-componenten worden gebruikt in veel van de acties die u met SQL kunt uitvoeren. Raadpleeg deze andere artikelen in de reeks voor meer informatie over het gebruiken van deze componenten:

Naar boven

De resultaten sorteren: ORDER BY

Net als in Microsoft Excel kunt u in Access queryresultaten sorteren in een gegevensblad. U kunt ook in de query opgeven hoe u de resultaten wilt sorteren wanneer de query wordt uitgevoerd, met behulp van een ORDER BY-component. Als u een ORDER BY-component gebruikt, is dit de laatste component in de SQL-instructie.

Een ORDER BY-component bevat een lijst met de velden die u wilt gebruiken voor het sorteren, in de volgorde waarin u de sorteerbewerkingen wilt toepassen.

Stel dat u de resultaten eerst in aflopende volgorde wilt sorteren op de waarde van het veld Company en daarna, als er records zijn met dezelfde waarde voor Company, in oplopende volgorde op de waarden in het veld E-mail Address. De ORDER BY-component ziet er dan zo uit:

ORDER BY Company DESC, [E-mail Address]

Opmerking: De standaardinstelling in Access is dat waarden in oplopende volgorde (A-Z, klein naar groot) worden gesorteerd. Gebruik het sleutelwoord DESC om waarden in aflopende volgorde te sorteren.

Zie het onderwerp ORDER BY, component voor meer informatie over de component ORDER BY.

Naar boven

Werken met samengevatte gegevens: GROUP BY en HAVING

Soms wilt u werken met samengevatte gegevens, zoals de totale verkopen in een maand of de duurste items op voorraad. Dit kan door een statistische functie toe te passen op een veld in de SELECT-component. Als u bijvoorbeeld een query wilt maken om het aantal e-mailadressen voor elk bedrijf op te vragen, maakt u een SELECT-component die er zo uitziet:

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

De statistische functies die u kunt gebruiken, worden bepaald door het type gegevens in het veld of de expressie die u wilt gebruiken. Zie Statistische SQL-functies voor meer informatie over de beschikbare statistische functies.

Velden opgeven die niet worden gebruikt in een statistische functie: de GROUP BY-component

Wanneer u statistische functies gebruikt, moet u meestal ook een GROUP BY-component maken. Een GROUP BY-component bevat alle velden die u wilt uitsluiten voor een statistische functie. Als u statistische functies wilt toepassen op alle velden in een query, hoeft u geen GROUP BY-component te maken.

Een GROUP BY-component staat direct na de WHERE-component, of de FROM-component als de instructie geen WHERE-component bevat. Een GROUP BY-component bevat de velden zoals deze worden weergegeven in de SELECT-component.

Als we het bovenstaande voorbeeld nemen en met de SELECT-component een statistische functie toepassen op [E-mail Address] maar niet op Company, ziet de GROUP BY-component er als volgt uit:

GROUP BY Company

Zie het onderwerp GROUP BY, component voor meer informatie over de component GROUP BY.

Aggregatiewaarden beperken met behulp van groepscriteria: de HAVING-component

Als u met behulp van criteria de queryresultaten wilt beperken, kunt u geen WHERE-component gebruiken als het veld waarop u criteria wilt toepassen in een statistische functie wordt gebruikt. In plaats daarvan kunt u een HAVING-component gebruiken. Een HAVING-component werkt hetzelfde als een WHERE-component, maar wordt gebruikt voor geaggregeerde gegevens.

Stel dat u de functie COUNT (om het aantal items te tellen) gebruikt met het eerste veld in de SELECT-component:

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

Als u het resultaat van de query wilt beperken op basis van de uitkomst van de functie COUNT, kunt u geen criteria voor dat veld gebruiken in de WHERE-component. In plaats daarvan plaatst u de criteria in een HAVING-component. Als de query bijvoorbeeld alleen rijen moet retourneren als er meer dan één e-mailadres is gekoppeld aan het bedrijf, kunt u een HAVING-component zoals deze gebruiken:

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

Opmerking: Een query kan een WHERE-component en een HAVING-component hebben. Criteria voor velden die niet worden gebruikt in een statistische functie plaatst u in de WHERE-component en criteria voor velden die worden gebruikt met statistische functies voegt u toe aan de HAVING-component.

Zie het onderwerp HAVING, component voor meer informatie over de HAVING-component.

Naar boven

Queryresultaten combineren: UNION

Als u in een gecombineerde set alle gegevens wilt bekijken die het resultaat zijn van verschillende vergelijkbare selectiequery's, gebruikt u de operator UNION.

Met de operator UNION kunt u twee SELECT-instructies combineren. Deze instructies moeten evenveel uitvoervelden hebben die in dezelfde volgorde staan en met dezelfde of compatibele gegevenstypen. Wanneer u de query uitvoert, worden gegevens uit elke set corresponderende velden in één uitvoerveld gecombineerd, zodat de queryuitvoer hetzelfde aantal velden heeft als elk van de SELECT-instructies.

Opmerking: Voor een samenvoegquery zijn de gegevenstypen Numeriek en Tekst compatibel.

Wanneer u de operator UNION gebruikt, kunt u ook aangeven of de queryresultaten dubbele rijen moeten bevatten (als die bestaan). Hiervoor gebruikt u het trefwoord ALL.

Dit is de basissyntaxis voor een samenvoegquery waarin twee SELECT-instructies worden gecombineerd:

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Stel dat u een tabel Products hebt en een tabel Services. Beide tabellen hebben velden met de naam van het product of de service, de prijs, waarborg- of garantiebeschikbaarheid en of het een exclusief aanbod betreft. Hoewel de tabel Products waarborginformatie bevat en de tabel Services garantie-informatie, gaat het in wezen om dezelfde informatie (namelijk of een specifiek product of specifieke service met een belofte van kwaliteit wordt geleverd). U kunt de vier velden uit de twee tabellen combineren met een samenvoegquery zoals hieronder:

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

Zie De resultaten van verschillende query's combineren met een samenvoegquery voor meer informatie over het combineren van SELECT-instructies met behulp van de operator UNION.

Naar boven

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.