sql >> Database >  >> RDS >> Access

Werken met Structured Query Language (SQL) met Microsoft Access 2010, 2013, 2016 en 2019

Inleiding

Het doel van deze zelfstudie is om te demonstreren hoe u uw eigen SQL-instructies kunt schrijven en uitvoeren vanuit Microsoft Access 2007, 2010, 2013 2016 of 2019 (de stappen zijn vrijwel identiek in alle versies). Zoals met alle relationele databases, kan Microsoft Access rechtstreeks worden geprogrammeerd met behulp van de Structured Query Language (SQL). Hoewel SQL meestal verborgen is voor gebruikers, biedt MS Access voor databasestudenten een snelle en gemakkelijke manier om SQL te verkennen en een aantal behoorlijk complexe query's te schrijven. Dit is vooral handig als u geen tijd of geduld heeft om SQL Server, Oracle, MySQL of een ander groter relationeel databasebeheersysteem te installeren.

De SQL-voorbeelden die in deze korte zelfstudie worden gebruikt, zijn gebaseerd op de eenvoudige tabellen Klant en Accounts die zijn gemaakt als onderdeel van mijn zelfstudie voor Microsoft Access 2007, 2010 en 2013.
Misschien wilt u eerst die zelfstudie doorlopen (of in ieder geval de eerste paar secties) om de tabellen te maken en de nodige gegevens toe te voegen om deze voorbeelden te laten werken.

Het volgende gedeelte geeft een zeer korte introductie van de Structured Query Language (SQL).

De Structured Query Language (SQL)

Structured Query Language (SQL uitgesproken als "Sequel") is een declaratieve programmeertaal die wordt gebruikt om relationele databasebeheersystemen (RDBMS) te manipuleren. Het werd voor het eerst geïntroduceerd in IBM's System R in de late jaren 1970. Tegenwoordig wordt SQL gebruikt in alle belangrijke relationele DBMS zoals Oracle, IBM DB2, Informix, Sybase, Microsoft SQL Server, MySQL, Postgres, SQLLite, Microsoft Access en vele anderen. Hoewel elke databaseleverancier een aantal eigen toegevoegde functies biedt, kan de kern van SQL op vrijwel elke relationele database worden gebruikt.

De gestructureerde zoektaal is verdeeld in twee grote delen:

  1. Data Definition Language (DDL) – Wordt gebruikt om datastructuren zoals schema's, tabellen, indexen, clusters, reeksen te creëren (definiëren) en om de database te beveiligen
  2. Taal voor gegevensmanipulatie (DML) - Wordt gebruikt om gegevens uit tabellen in te voegen, op te halen, bij te werken en te verwijderen.

Microsoft Access ondersteunt zowel DDL- als DML-onderdelen van SQL. Meestal richten we ons op SQL-query's die als SQL SELECT-instructies werden gebruikt om gegevens uit een bestaande database op te halen. De basissyntaxis voor een SQL SELECT-instructie is:

SELECT   column1, column2, ... columnN
FROM     tableA, tableB, ... tableZ
WHERE    condition1, condition2, ...conditionM
ORDER BY column1, column2, ... columnN

Dus als we bijvoorbeeld aannemen dat we een tabel hebben met de naam Klant met kolommen zoals Voornaam, Achternaam, Straatadres, Stad, staat en Zip, kunnen we een SQL SELECT-instructie als volgt schrijven:

SELECT   FirstName, LastName, City, State
FROM     customer

In de bovenstaande query vragen we om gegevens in alleen de kolommen FirstName, LastName, City en State, en de tabel waaruit we deze gegevens halen, wordt klant genoemd. Merk op dat SQL-taal zich geen zorgen maakt over hoofdletters of kleine letters. Dus schrijven select firstName... is hetzelfde als schrijven SELECTEER EERSTENAAM ... .

Een iets geavanceerdere vraag zou zijn als we alleen klanten willen zien die in Georgië wonen en we willen dat de resultaten gesorteerd worden op de achternaam van de klant:

SELECT   FirstName, LastName, City, State
FROM     customer
WHERE    state = 'GA'
ORDER BY LastName

Zoals u kunt zien, volgt de lijst met kolommen die we willen weergeven het SELECT-sleutelwoord. De naam van de tabel die we opvragen volgt het FROM-sleutelwoord, een voorwaarde state ='GA' volgt het trefwoord WHERE en tenslotte worden de resultaten gesorteerd in de kolom LastName zoals beschreven door het trefwoord ORDER BY.

Er zijn veel meer functies van de SQL SELECT-instructie die betrekking hebben op het opvragen van meerdere tabellen door ze samen te voegen, verzamelingen records te groeperen om totalen, grootste, kleinste of gemiddelde waarden te vinden en andere manipulaties uit te voeren op de uitvoer die gebruikers uiteindelijk zullen zien. Een veel uitgebreidere discussie over de functies van SQL is te vinden op deze link.

De volgende sectie introduceert het gebruik van SQL vanuit de Query Design-weergave in MS Access.

SQL in Microsoft Access

In deze sectie zullen we de stappen geven om uw eigen SQL in MS Access te schrijven. Deze oefening gaat ervan uit dat u MS Access 2007, 2010 of 2013 hebt draaien met de "Bank"-database (Klanten- en Rekeningstabellen) geopend. Klik hier voor de tutorial met stappen om deze database aan te maken.

Om te beginnen:

  1. maak een nieuwe zoekopdracht door op Maken . te klikken tabblad en klik vervolgens op de Query Design pictogram zoals hieronder weergegeven.
  2. Het dialoogvenster "Tabel weergeven" verschijnt zoals hieronder weergegeven. Klik op de Sluiten knop om het te sluiten.
  3. Klik op het tabblad Ontwerp en klik vervolgens op de SQL pictogram aan de linkerkant (of trek de weergaveknop omlaag en selecteer SQL

  4. Op dit punt verschijnt de SQL-weergave van de Query1-query. Standaard wordt het SELECT-trefwoord in het venster weergegeven.
  5. Bewerk de query om een ​​volledige SQL-instructie uit te schrijven:
    SELECT   firstname, lastname
    FROM     customer
    ORDER BY lastname
    
    

    Het queryvenster voor de SQL-weergave verschijnt nu zoals hieronder:

  6. Op dit punt, met de SQL-instructie ingetypt, kunnen we de query uitvoeren op de database door op het uitroepteken "Uitvoeren" te klikken.

  7. De resultaten van de zoekopdracht worden weergegeven in een gegevensbladweergave (zoals een spreadsheet):

  8. Om terug te keren naar het bewerken van de SQL-query, trekt u het menu Beeld naar beneden en selecteert u opnieuw SQL.

  9. U kunt uw zoekopdracht ook opslaan. Klik hiervoor met de rechtermuisknop op het tabblad met de huidige querynaam:Query1 en kies Opslaan .

    Er verschijnt een dialoogvenster waarin u wordt gevraagd om de nieuwe naam van de query. Typ een nieuwe naam, zoals:Klantnamen en klik vervolgens op OK om het op te slaan.

  10. Ten slotte biedt MS Access geen manier om een ​​zoekopdracht op te slaan onder een nieuwe naam (“Opslaan als”). In plaats daarvan kunt u de naam van de zoekopdracht markeren, met de rechtermuisknop klikken en Kopiëren selecteren klik vervolgens nogmaals met de rechtermuisknop en selecteer Plakken . U wordt dan gevraagd om de nieuwe naam van de zoekopdracht.

Vervolgens zal ik enkele trucs en tips presenteren voor het schrijven en debuggen van uw SQL-query's.

SQL-query's schrijven en debuggen in MS Access

Nu u de basismechanismen hebt voor het schrijven en uitvoeren van SQL-query's, volgen hier een paar tips en trucs voor het debuggen van uw SQL.

Bewerkers voor MS Access SQL

Het SQL-editorvenster in MS Access is niet zo intelligent of gemakkelijk om mee te werken. Een manier om met SQL te werken, is door de code in een andere editor te schrijven en de code vervolgens te kopiëren en in Access te plakken om deze uit te voeren. Er zijn veel verschillende teksteditors beschikbaar. Binnen Windows heeft u bijvoorbeeld Kladblok beschikbaar onder de groep Accessoires. De enige waarschuwing die ik hier kan geven, is om GEEN MS Word of andere tekstverwerkingssoftware te gebruiken om uw SQL te schrijven. De reden hiervoor is dat MS Word en andere tekstverwerkers uw enkele en dubbele aanhalingstekens zullen omzetten in "fraaie aanhalingstekens" die SQL niet begrijpt.
Als u bijvoorbeeld een WHERE-clausule heeft, zoals WHERE state ='GA'
SQL verwacht dat de tekst tussen eenvoudige aanhalingstekens staat. MS Word verandert deze in een mooi aanhalingsteken voor openen en sluiten dat SQL niet zal begrijpen.
Als u een foutmelding krijgt zoals Voer parameterwaarde in voor `GA' dan wil je er zeker van zijn dat je tekst tussen gewone enkele aanhalingstekens staat.

Omgaan met syntaxisfouten

Syntaxisfouten kunnen erg frustrerend zijn in SQL, omdat de database vaak niet precies kan bepalen waar het probleem zich in uw code bevindt. Enkele van de belangrijkste fouten die in Access worden weergegeven, zijn:

Fouttekst Oplossing Voorbeeld
Voer parameterwaarde in voor ________ Meestal gebeurt dit wanneer de naam van een kolom (veld) niet correct is getypt (zoals in dit geval "lstname" verkeerd gespeld is) of een uitdrukking niet kan worden herkend, zoals WHERE state =`GA'
De Microsoft Access Database-engine kan de invoerquery of tabel niet vinden :______________ Meestal gebeurt dit wanneer de naam van een tabel niet correct is getypt in de FROM-clausule van de query. In dit geval specificeerde de zoekopdracht bijvoorbeeld FROM customers in plaats van VAN klant
Syntaxisfout (operator ontbreekt) in query-expressie:______________ In dit geval mist de syntaxis van de query enkele belangrijke onderdelen. De "FROM"-component ontbreekt bijvoorbeeld en daarom meldt Access bij benadering de locatie van waar het probleem zich voordoet door de tekst van de query weer te geven.

In het volgende gedeelte zal ik enkele aanvullende tips geven over hoe u uw SQL-query's en resultaten voor een project of huiswerkopdracht kunt presenteren.

Uw SQL-werk documenteren

In dit gedeelte zal ik enkele tips beschrijven voor het opmaken van uw zoekopdrachten en resultaten, zodat ze op een duidelijke, beknopte manier worden gepresenteerd in uw opdrachten en projecten.
De veronderstelling hierbij is dat u een tekstverwerkingsprogramma zoals MS Word of een ander tekstverwerkingsprogramma dat het kopiëren en plakken van afbeeldingen en tekst ondersteunt.

MS Access staat niet toe dat u opmerkingen in de SQL-code plaatst. Andere DBMS staan ​​dit wel toe, maar Access is wat beperkter.

Neem voor deze oefening aan dat de huiswerkvraag is om de voor- en achternaam van alle klanten te tonen en het resultaat te rangschikken op de achternaam van de klant.

  1. Typ de SQL-query zoals beschreven in de vorige sectie en voer deze uit om de resultaten te krijgen:
  2. Klik in de gegevensbladweergave op het kleine vierkante vak links van de kolomkoppen en boven aan de rijselectievakken. Hierdoor wordt de hele reeks resultaten gemarkeerd.
  3. Klik met de rechtermuisknop op hetzelfde kleine vierkante vakje in de hoek en selecteer Kopiëren uit het pop-upmenu.
  4. Schakel over naar MS Word (of een ander tekstverwerkingsprogramma) en plak de resultaten op een geschikte locatie:

Enkele andere nuttige tips die ook werden gevolgd bij het maken van dit opdrachtdocument:

  • Zorg ervoor dat u de volledige zin typt die de vraag beschrijft die u oplost (zet niet alleen "Vraag 1"). U kunt bijvoorbeeld de vraag uit het huiswerk kopiëren en er een deel van het antwoord van maken.
  • Wanneer u de SQL-tekst voor uw zoekopdracht plakt, gebruikt u een Courier New-lettertype zodat de tekens en spatiëring op één lijn liggen. Dit maakt het veel gemakkelijker om te lezen.
  • Plak de resultaten in de bovenstaande techniek in plaats van een screenshot te gebruiken. Dit maakt niet alleen je Word-documentbestanden kleiner, maar komt ook heel duidelijk naar voren als je het afdrukt.
  • Vergeet niet je naam, klas/cursus en sectie op je opdracht te zetten.
  • Voor complexere zoekopdrachten waarbij mogelijk subquery's of inline-query's betrokken zijn, kunt u de subquery's het beste in een ingesprongen lijn plaatsen om ze gemakkelijker leesbaar en foutopsporing te maken. Bijvoorbeeld, in plaats van een subquery als deze te schrijven:
    SELECT  accountnumber, balance
    FROM    accounts  WHERE   balance = (SELECT MIN(balance) from accounts)
    
    

    Zet de subquery tussen haakjes:

    SELECT  accountnumber, balance
    FROM    accounts  
    WHERE   balance = (
                        SELECT MIN(balance) 
                        FROM   accounts
                      )
    
    

Als u deze stappen volgt, maakt u een geweldige indruk wanneer u uw opdrachten en projecten inlevert.

Conclusies

In deze korte zelfstudie hebben we besproken hoe u met SQL kunt werken met MS Access. SQL is een vrij generieke programmeertaal en alles wat je leert tijdens het schrijven van SQL onder MS-toegang kan eenvoudig worden overgebracht naar andere relationele databases zoals SQL Server, Oracle, Sybase, enz. Voor meer opmerkingen over SQL, bezoek mijn Structured Query Language (SQL) pagina met cursusnotities.

Ga voor meer inleidende en geavanceerde MS Access-zelfstudies naar de Access-categorie op mijn website.


  1. Online SQL-syntaxiscontrole die voldoet aan meerdere databases

  2. MySQL-fout 1064-syntaxis, maar alles lijkt in orde

  3. Programmatisch een database maken in SQL Server

  4. T-SQL dynamische spil