Se le query non funzionano a sufficienza, l'aggiunta di alcune istruzioni di SQL di base può aiutare a focalizzare i risultati. Esaminiamo alcuni tipi di istruzioni SQL e le clausole o parti che è possibile modificare per ottenere i risultati desiderati.
Nota: Questo articolo non è applicabile alle app Web di Access, il nuovo tipo di database che può essere progettato con Access e pubblicato online.
In questo articolo
Creare un'istruzione Select
Un'istruzione SQL select ha da due a tre clausole. La clausola SELECT indica al database dove cercare i dati e chiede di restituire un risultato specifico.
Nota: Le istruzioni SELECT terminano sempre con un punto e virgola (;) alla fine dell'ultima clausola o in una riga da sola alla fine dell'istruzione SQL.
L'istruzione di selezione seguente chiede ad Access di ottenere informazioni dalle colonne Indirizzo di posta elettronica e Società, dalla tabella Contatti, in particolare quando trova "Seattle" nella colonna Città.
La query precedente include tre clausole SELECT, FROM e WHERE.
1. La clausola SELECT elenca le colonne che contengono i dati da usare e ha un operatore (SELECT) seguito da due identificatori (E-mail Address e Company). Se un identificatore include spazi o caratteri speciali, ad esempio "Indirizzo di posta elettronica", racchiudere l'identificatore tra parentesi quadre.
2. La clausola FROM identifica la tabella di origine. In questo esempio ha un operatore (FROM) seguito da un identificatore (Contacts).
3. La clausola WHERE è una clausola facoltativa. L'esempio include un operatore (WHERE) seguito da un'espressione (City="Seattle").
Per altre informazioni sulle query di selezione, vedere Creare una query di selezione semplice.
Ecco un elenco di clausole SQL comuni:
Clausola SQL |
Funzione |
Obbligatorio ? |
SELECT |
Elenca i campi che contengono i dati di interesse. |
Sì |
FROM |
Elenca le tabelle che contengono i campi elencati nella clausola SELECT. |
Sì |
WHERE |
Specifica i criteri di campo che ogni record deve soddisfare perché sia incluso nei risultati. |
No |
ORDER BY |
Specifica il tipo di ordinamento dei risultati. |
No |
GROUP BY |
In un'istruzione SQL contenente funzioni di aggregazione, elenca i campi non riepilogati nella clausola SELECT. |
Solo se sono presenti campi di questo tipo |
HAVING |
In un'istruzione SQL contenente funzioni di aggregazione, specifica le condizioni che si applicano ai campi riepilogati nell'istruzione SELECT. |
No |
Ogni clausola SQL è costituita da termini. Ecco un elenco di alcuni termini SQL comuni.
Termine SQL |
Definizione |
Esempio |
identificatore |
Nome usato per identificare un oggetto di database, ad esempio il nome della colonna. |
[Indirizzo di posta elettronica] e Società |
operatore |
Parola chiave che rappresenta un'azione o modifica un'azione. |
AS |
costante |
Valore che non viene modificato, ad esempio un numero o NULL. |
42 |
espressione |
Combinazione di identificatori, operatori, costanti e funzioni che restituisce un unico valore. |
>= Prodotti.[Prezzo unitario] |
Personalizzazione della clausola SELECT
Personalizza |
Esempio |
Per visualizzare solo i valori distinti. Usare la parola chiave DISTINCT nella clausola SELECT. |
Ad esempio, se i clienti provengono da diverse filiali diverse e alcuni hanno lo stesso numero di telefono e si vuole visualizzare un solo numero di telefono elencato una sola volta, la clausola SELECT sarà simile alla seguente:
|
Per modificare il modo in cui un identificatore viene visualizzato nella visualizzazione Foglio dati per migliorare la leggibilità. Usare l'operatore AS (una parola chiave che rappresenta un'azione o modifica un'azione) con un alias di campo nella clausola SELECT. Un alias di campo è un nome assegnato a un campo per facilitare la lettura dei risultati. |
|
Personalizzazione della clausola FROM
Personalizzare |
Esempio |
È possibile usare un alias di tabella o un nome diverso assegnato a una tabella in un'istruzione select. Un alias di tabella è utile se il nome del nome della tabella è lungo, soprattutto se sono presenti più campi con lo stesso nome di tabelle diverse. |
Per selezionare i dati da due campi, entrambi id denominati, uno dei quali proviene dalla tabella tblCustomer e l'altro dalla tabella tblOrder:
Usare l'operatore AS per definire gli alias di tabella nella clausola FROM:
È quindi possibile usare questi alias di tabella nella clausola SELECT, come indicato di seguito:
|
Usare i join per combinare coppie di record da due origini dati in un singolo risultato o per specificare se includere i record di una delle due tabelle se nella tabella correlata non è presente alcun record corrispondente. Creare un join tra le tabelle in modo che la query combina gli elementi delle tabelle ed escluda gli elementi quando nell'altra tabella non è presente alcun record corrispondente |
Ecco l'aspetto della clausola FROM:
|
Informazioni sull'uso dei join
Esistono due tipi di join, inner join e outer join. Gli inner join sono più comuni nelle query. Quando si esegue una query con un inner join, il risultato mostra solo gli elementi in cui esiste un valore comune in entrambe le tabelle unite.
Gli outer join specificano se includere i dati in cui non esiste alcun valore comune. Gli outer join sono direzionali, ovvero è possibile specificare se includere tutti i record della prima tabella specificata nel join (detto left join) o tutti i record della seconda tabella nel join (detto right join). Per un outer join è disponibile la sintassi SQL seguente:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Per altre informazioni sull'uso dei join in una query, vedere Creare join in tabelle e query.
Personalizzazione della clausola WHERE
La clausola WHERE include criteri che consentono di limitare il numero di elementi restituiti in una query. Vedere esempi di criteri di query e come funzionano.
Un esempio di come personalizzare la clausola WHERE di base consiste nel limitare i risultati di una query. Si supponga di voler individuare il numero di telefono di un cliente e di ricordare solo il cognome come Bagel. In questo esempio i cognomi vengono archiviati in un campo Cognome, quindi la sintassi SQL sarà:
WHERE [LastName]='Bagel'
Usare la clausola WHERE anche per combinare origini dati per colonne con dati corrispondenti ma tipi di dati diversi. Questo è utile perché non è possibile creare un join tra campi con tipi di dati diversi. Usare un campo come criterio per l'altro campo, con la parola chiave LIKE . Ad esempio, se si vogliono usare i dati di una tabella Beni e di una tabella Dipendenti, solo quando il tipo di bene nel campo tipo di bene della tabella Beni ha il numero 3 nel campo Quantità della tabella Dipendenti, ecco come apparirebbe la clausola WHERE:
WHERE field1 LIKE field2
Importante: Non è possibile specificare criteri per un campo usato con una funzione di aggregazione in una clausola WHERE. Per specificare i criteri per i campi di aggregazione viene usata, invece, una clausola HAVING.
Personalizzazione con l'operatore UNION
Usare l'operatore UNION per visualizzare una visualizzazione combinata dei risultati di diverse query di selezione simili. Ad esempio, se il database include una tabella Prodotti e una tabella Servizi ed entrambi hanno tre campi: offerta o prodotto o servizio esclusivo, prezzo, garanzia o garanzia. Anche se la tabella Prodotti archivia le informazioni sulla garanzia e la tabella Servizi archivia le informazioni di garanzia, le informazioni di base sono le stesse. È possibile usare una query di unione per combinare i tre campi delle due tabelle in questo modo:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
Quando si esegue la query, i dati di ogni set di campi corrispondenti vengono combinati in un unico campo di output. Per includere eventuali righe duplicate nei risultati, usare l'operatore ALL.
Nota: L'istruzione Select deve avere lo stesso numero di campi di output, nello stesso ordine e con tipi di dati uguali o compatibili. Ai fini di una query di unione, i tipi di dati Numero e Testo sono compatibili.
Per altre informazioni sulle query di unione, vedere Uso di una query di unione per visualizzare un risultato unificato da più query.