Introduzione
Lo scopo di questa esercitazione è dimostrare come è possibile scrivere le proprie istruzioni SQL ed eseguirle da Microsoft Access 2007, 2010, 2013 2016 o 2019 (i passaggi sono praticamente identici in tutte le versioni). Come tutti i database relazionali, Microsoft Access può essere programmato direttamente utilizzando il Structured Query Language (SQL). Mentre molto spesso SQL è nascosto agli utenti, per gli studenti di database, MS Access fornisce un modo semplice e veloce per esplorare SQL e scrivere alcune query piuttosto complesse. Ciò è particolarmente utile se non hai tempo o pazienza per installare SQL Server, Oracle, MySQL o altri sistemi di gestione di database relazionali più grandi.
Gli esempi SQL utilizzati in questo breve tutorial si basano sulle semplici tabelle Clienti e Account create nell'ambito del mio tutorial di Microsoft Access 2007, 2010 e 2013.
Potresti voler eseguire prima quel tutorial (o almeno il primo alcune sezioni) per creare le tabelle e aggiungere i dati necessari per far funzionare questi esempi.
La prossima sezione fornirà una brevissima introduzione allo Structured Query Language (SQL).
Il linguaggio di query strutturato (SQL)
Structured Query Language (SQL pronunciato "Sequel") è un linguaggio di programmazione dichiarativo utilizzato per manipolare i sistemi di gestione di database relazionali (RDBMS). È stato introdotto per la prima volta in System R di IBM alla fine degli anni '70. Oggi SQL è utilizzato in tutti i principali DBMS relazionali come Oracle, IBM DB2, Informix, Sybase, Microsoft SQL Server, MySQL, Postgres, SQLLite, Microsoft Access e molti altri. Sebbene ogni fornitore di database fornisca alcune funzionalità proprietarie aggiunte, il nucleo di SQL può essere utilizzato praticamente su qualsiasi database relazionale.
Il linguaggio di query strutturato è diviso in due parti principali:
- Data Definition Language (DDL) – Utilizzato per creare (definire) strutture di dati come schemi, tabelle, indici, cluster, sequenze e proteggere il database
- Data Manipulation Language (DML) – Utilizzato per inserire, recuperare, aggiornare ed eliminare dati dalle tabelle.
Microsoft Access supporta le parti DDL e DML di SQL. La maggior parte delle volte ci concentriamo sulle query SQL che come istruzioni SQL SELECT utilizzate per recuperare i dati da un database esistente. La sintassi di base per un'istruzione SQL SELECT è:
SELECT column1, column2, ... columnN FROM tableA, tableB, ... tableZ WHERE condition1, condition2, ...conditionM ORDER BY column1, column2, ... columnN
Quindi, supponendo ad esempio di avere una tabella denominata Cliente con colonne come FirstName, LastName, StreetAddress, City, state e Zip, possiamo scrivere un'istruzione SQL SELECT come questa:
SELECT FirstName, LastName, City, State FROM customer
Nella query precedente chiediamo dati solo nelle colonne Nome, Cognome, Città e Stato e la tabella da cui otteniamo questi dati è chiamata cliente. Nota che il linguaggio SQL non si preoccupa delle lettere maiuscole o minuscole. Quindi scrivendo seleziona firstName... equivale a scrivere SELECT FIRSTNAME ... .
Una query leggermente più sofisticata sarebbe se volessimo vedere solo i clienti che vivono in Georgia e vorremmo che i risultati fossero ordinati in base al cognome del cliente:
SELECT FirstName, LastName, City, State FROM customer WHERE state = 'GA' ORDER BY LastName
Come puoi vedere, l'elenco delle colonne che vogliamo mostrare segue la parola chiave SELECT. Il nome della tabella che stiamo interrogando segue la parola chiave FROM, una condizione state ='GA' segue la parola chiave WHERE e infine i risultati vengono ordinati nella colonna LastName come descritto dalla parola chiave ORDER BY.
Esistono molte altre funzionalità dell'istruzione SQL SELECT che implicano l'esecuzione di query su più tabelle "unendole" insieme, raggruppando raccolte di record per trovare i totali, i valori più grandi, più piccoli o medi ed eseguendo altre manipolazioni sull'output che gli utenti alla fine vedranno. Una discussione molto più completa sulle funzionalità di SQL può essere trovata a questo link.
La sezione successiva introduce l'uso di SQL dalla visualizzazione Query Design in MS Access.
SQL in Microsoft Access
In questa sezione forniremo i passaggi per scrivere il tuo SQL in MS Access. Questo esercizio presuppone che MS Access 2007, 2010 o 2013 sia in esecuzione con il database "Banca" (tabelle Clienti e Conti) aperto. Fare clic qui per il tutorial con i passaggi per creare questo database.
Per iniziare:
- crea una nuova query facendo clic su Crea scheda e quindi facendo clic su Progettazione query icona come mostrato di seguito.
- La finestra di dialogo "Mostra tabella" apparirà come mostrato di seguito. Fare clic su Chiudi per chiuderlo.
- Fare clic sulla scheda Design e quindi fare clic su SQL icona sul lato sinistro (o apri il pulsante Visualizza e seleziona SQL
- A questo punto apparirà la vista SQL della query Query1. Per impostazione predefinita, nella finestra viene visualizzata la parola chiave SELECT.
- Modifica la query per scrivere un'istruzione SQL completa:
SELECT firstname, lastname FROM customer ORDER BY lastname
La finestra della query della vista SQL apparirà come di seguito:
- A questo punto, con l'istruzione SQL digitata, possiamo eseguire la query sul database facendo clic sul pulsante "Esegui" con il punto esclamativo.
- I risultati della query verranno visualizzati in una visualizzazione Foglio dati (come un foglio di calcolo):
- Per tornare a modificare la query SQL, apri il menu Visualizza e seleziona nuovamente SQL.
- Potresti anche voler salvare la tua richiesta. Per fare ciò, fai clic con il pulsante destro del mouse sulla scheda con il nome della query corrente:Query1 e scegli Salva .
Verrà visualizzata una finestra di dialogo che richiede il nuovo nome della query. Digita un nuovo nome come:Nomi_clienti e quindi fare clic su OK per salvarlo.
- Infine, MS Access non fornisce un modo per salvare una query con un nuovo nome ("Salva con nome"). Invece quello che puoi fare è evidenziare il nome della query, fare clic con il pulsante destro del mouse e selezionare Copia quindi fare nuovamente clic con il pulsante destro del mouse e selezionare Incolla . Ti verrà quindi richiesto il nuovo nome della query.
Successivamente presenterò alcuni trucchi e suggerimenti sulla scrittura e il debug delle query SQL.
Scrittura e debug di query SQL in MS Access
Ora che hai i meccanismi di base per scrivere ed eseguire query SQL, ecco alcuni suggerimenti e trucchi per il debug del tuo SQL.
Editor per MS Access SQL
La finestra dell'editor SQL in MS Access non è così intelligente o facile da usare. Un modo per lavorare con SQL è scrivere il codice in un altro editor, quindi copiare e incollare il codice in Access per eseguirlo. Sono disponibili molti editor di testo diversi. Ad esempio all'interno di Windows avrai Blocco note disponibile nel gruppo Accessori. L'unico avvertimento che posso dare qui è di NON usare MS Word o altri software di elaborazione testi per scrivere il tuo SQL. La ragione di ciò è che MS Word e altri elaboratori di testi trasformeranno le virgolette singole e doppie in "virgolette fantasiose" che SQL non comprende.
Ad esempio, se hai una clausola WHERE come WHERE state ='GA'
SQL prevede che il testo sia racchiuso tra virgolette semplici. MS Word li trasformerà in un carattere di virgoletta di apertura e chiusura di fantasia che SQL non capirà.
Se ricevi un errore come Inserisci il valore del parametro per `GA' quindi vorrai sicuramente assicurarti di avere il tuo testo racchiuso tra virgolette singole semplici.
Gestire gli errori di sintassi
Gli errori di sintassi possono essere molto frustranti in SQL perché spesso il database non è in grado di individuare esattamente dove si trova il problema nel codice. Alcuni dei principali errori visualizzati da Access includono:
Testo di errore | Soluzione | Esempio |
---|---|---|
Inserisci il valore del parametro per ________ | Molto spesso ciò accade quando il nome di una colonna (campo) non è digitato correttamente (come in questo caso "lstname" è scritto in modo errato) o un'espressione non può essere riconosciuto come WHERE state =`GA' | |
Il motore di database di Microsoft Access non riesce a trovare la query o la tabella di input :______________ | Molto spesso ciò accade quando il nome di una tabella non è digitato correttamente nella clausola FROM della query. Ad esempio, in questo caso la query specificava DAI clienti invece di DAL cliente | |
Errore di sintassi (operatore mancante) nell'espressione di query:______________ | In questo caso la sintassi della query manca di alcune parti chiave. Ad esempio, manca la clausola "FROM" e quindi Access segnala la posizione approssimativa in cui si verifica il problema mostrando il testo della query. |
Nella prossima sezione fornirò alcuni suggerimenti aggiuntivi su come presentare le tue query SQL e i risultati per un progetto o un compito a casa.
Documentazione del tuo lavoro SQL
In questa sezione descriverò alcuni suggerimenti per formattare le tue query e i tuoi risultati in modo che siano presentati in modo chiaro e conciso sui tuoi compiti e progetti.
Il presupposto qui è che utilizzerai un programma di elaborazione testi come MS Word o un altro programma di elaborazione testi che supporta la copia e incolla di immagini e testo.
MS Access non consente di inserire commenti nel codice SQL. Altri DBMS lo consentono, ma Access è un po' più restrittivo.
Per questo esercizio, supponi che la domanda dei compiti sia mostrare il nome e il cognome di tutti i clienti e ordinare il risultato in base al cognome del cliente.
- Digita la query SQL come descritto nella sezione precedente ed eseguila per ottenere i risultati:
- Nella visualizzazione Foglio dati, fai clic sulla piccola casella quadrata a sinistra delle intestazioni delle colonne e nella parte superiore delle caselle di selezione delle righe. In questo modo verrà evidenziato l'intero set di risultati.
- Fai clic con il pulsante destro del mouse sulla stessa piccola casella quadrata nell'angolo e seleziona Copia dal menu a comparsa.
- Passa a MS Word (o altro programma di elaborazione testi) e incolla i risultati in una posizione appropriata:
Alcuni altri suggerimenti utili che sono stati seguiti anche nella creazione di questo documento di assegnazione:
- Assicurati di digitare l'intera frase che descrive la query che stai risolvendo (non inserire semplicemente "Domanda 1"). Ad esempio, potresti voler copiare la domanda dai compiti e inserirla nella risposta.
- Quando si incolla il testo SQL per la query, utilizzare un carattere Courier New in modo che i caratteri e la spaziatura si allineino. Questo rende molto più facile la lettura.
- Incolla i risultati usando la tecnica mostrata sopra invece di usare uno screenshot. Questo non solo renderà più piccoli i file dei documenti di Word, ma risulterà anche molto chiaro quando lo stamperai.
- Assicurati di inserire il tuo nome, classe/corso e sezione sul tuo compito.
- Per query più complesse che possono coinvolgere Subquery o Inline query, è meglio allineare le subquery in modo indentato per facilitarne la lettura e il debug. Ad esempio, invece di scrivere una sottoquery come questa:
SELECT accountnumber, balance FROM accounts WHERE balance = (SELECT MIN(balance) from accounts)
Allinea la sottoquery tra parentesi:
SELECT accountnumber, balance FROM accounts WHERE balance = ( SELECT MIN(balance) FROM accounts )
Seguire questi passaggi farà un'ottima impressione quando consegnerai i tuoi incarichi e progetti.
Conclusioni
In questo breve tutorial abbiamo spiegato come lavorare con SQL utilizzando MS Access. SQL è un linguaggio di programmazione abbastanza generico e tutto ciò che impari durante la scrittura di SQL con accesso MS può essere facilmente trasferito ad altri database relazionali come SQL Server, Oracle, Sybase, ecc. Per ulteriori note su SQL, visita il mio Structured Query Language (SQL) pagina delle note del corso.
Per ulteriori tutorial introduttivi e avanzati su MS Access, visitare la categoria Accesso sul mio sito Web.