Guida Rapida all’utilizzo di Microsoft Access Giorgio Delzanno L’ambiente Access Acces è un sistema per la gestione di database relazionali che permette di creare schemi, inserire e modificare dati tramite maschere, definire ed eseguire interrogazioni (query) SQL. Le query possono essere definite tramite una finestra che guida la loro definizione oppure direttamente tramite il linguaggio SQL. In un Database Access i dati vengono memorizzati in un insieme di tabelle (relazioni). Le caratteristiche di una tabella vengono definite tramite la loro struttura (schema dei dati). Il foglio dei dati presenta invece i dati veri e propri. Strumenti Per selezionare gli strumenti di lavoro utilizzare la voce Visualizza, Barre degli strumenti. Una configurazione ragionevole prevede la visualizzazione della barra del database. Guida in linea, Gestione dei File, Ricerca, e Stampa Simili alle operazioni viste in Excel e Word. Ad es., la guida in linea è disponibile alla voce ? della barra dei menu. Impostazione pagina e fogli Come nel caso di Word è possibile impostare le caratteristiche di stampa delle tabelle di un database utilizzano le voci File, Imposta Pagina. Visualizzazione Come in Word si può visualizzare il risultato dell’elaborazione utilizzando File, Anteprima Stampa. Gestione di un Database Per creare (aprire) un database nuovo (già esistente) si usa la voce File, Nuovo (Apri) database che crea una sottofinestra che chiameremo tabella del database corrente con le voci Tabelle, Query, Maschere, Report, Macro che permette di creare (modificare) le componenti del database corrente. Tabelle Struttura (o schema dei dati) Per creare un nuovo schema di una relazione occorre selezionare il tasto Nuovo dalla tabella del database corrente e quindi selezionare la voce Visualizza struttura e premere Ok. A questo punto verrà visualizzata una apposita finestra nella quale sarà possibile definire il nome della tabella (relazione), il nome delle sue colonne (attributi), il tipo degli attributi e la loro descrizione, ed infine dove è possibile specificare la chiave primaria della relazione. Per specificare la chiave primaria occorre selezionare l’attributo (attributi) candidato e premere il pulsante chiave primaria (con una chiave come logo) sulla barra del database. Per salvare con nome la struttura appena definita si utilizza la voce File, Salva con Nome. Nota: ricordate che lo schema dei dati specifica solo la struttura della tabella, non il suo contenuto. Inserimento Dati Dopo aver creato e salvato le strutture delle relazioni, possiamo inserire i dati semplicemente aprendo la tabella (pulsante Apri) dalla finestra del database corrente ed inserendo i dati nelle apposite celle. Ogni riga di una tabella viene chiamata record. Aprire tabelle Se si vuole invece visualizzare lo schema di una tabella (relazione) preesistente occorre selezionarne il nome e premere Struttura. Maschere Per popolare le relazioni di un database si possono anche creare delle maschere che facilitano l’inserimento dei dati.Una maschera ha l’aspetto di un modulo attraverso il quale possiamo inserire o mostrare ad un utente i dati del database. 03/06/17 10.34 1 Per creare una nuova maschera occorre selezionare Maschere, Nuovo dalla finestra del database. La voce Visualizza struttura permette di personalizzare la maschera inserendo campi e bottoni a scelta. Altre voci forniscono formati predefiniti quali Maschera standard: a colonne. Query Le query possono essere create attraverso la finestra delle query raggiungibile tramite la voce Query della finestra del database corrente. Una nuova query può essere memorizzata in modo da poter essere riutilizzata e modificata. Inoltre può essere visualizzata in uno dei seguenti modi: come tabella (contente i dati risultanti dall’esecuzione della query, vedi Visualizza, Visualizzazione Foglio Dati); come struttura (contente la definizione della query in un linguaggio grafico, vedi Visualizza, Visualizzazione Struttura); come codice SQL (vedi Visualizza, Visualizzazione SQL). Creare una Query SQL Una query viene creata premendo Nuovo nella finestra delle query e quindi selezionando la voce Visualizza Struttura. Scrivere Query SQL Per operare direttamente con il linguaggio SQL occorre: Chiudere la finestra Mostra tabella. Selezionare Visualizzazione SQL dalla voce Visualizza della barra dei menu. Immettere la query nella nuova finestra (che inizialmente conterrà solo la parola chiave SELECT). Le query vanno scritte utilizzando la sintassi vista a lezione. In ogni caso si può consultare il manuale on-line per avere la sintassi precise dei comandi (cercate il nome del costrutto che vi interessa, ad es. SELECT ecc.). Alcuni aspetti della sintassi di Microsoft SQL ono ripresi alla fine di queste note. Salvare Query Una volta terminata la specifica della query, si può salvare con nome utilizzando la voce File, Salva con Nome. Eseguire Query Per eseguire una query selezionare la voce Query, Esegui dalla barra dei menu. Il risultato dell’esecuzione di una query sarà una nuova relazione che verrà visualizzata su una nuova finestra. Visualizzare il codice SQL Per visualizzare il codice SQL di una query esistente occorre: selezionare il nome della query dalla finestra del database, aprire la sua struttura (pulsante Struttura), e quindi selezionare Visualizza, Visualizzazione SQL dalla barra dei menu. Altri modi di inserire una query Oltre alla sintassi SQL le query possono essere visualizzate come strutture. Le strutture contegono la definizione delle query fatta attraverso un linguaggio grafico tradotto automaticamente in SQL (vedi Visualizza, Visualizzazione Struttura). Utilizzare le strutture può velocizzare la composizione di query. Ad esempio, la tabella Mostra tabella permette di specificare il nome delle tabelle da interrogare. Ogni tabella selezionata viene aggiunta (prenere Aggiungi nella finestra Mostra tabella) nello spazio apposito della finestra Query di selezione. Report I report permettono di formattare le tabelle (e i fogli dato delle query) di un database in modo da creare dei documenti pronti da essere stampati. La voce Report della finestra del database corrente permette di selezionare vari formati predefiniti oppure di utilizzare una procedura di autocomposizione per formattare i dati di una tabella. Alcuni aspetti della sintassi di Microsoft SQL La sintassi di Microsoft SQL corrisponde alla sintassi vista a lezione tranne in alcuni punti (ad es. op. LIKE, uso di COUNT). Qui di seguito presentiamo alcuni aspetti presi dal manuale on-line. In ogni caso è consigliabile consultare il manuale di Access per dissipare i dubbi sulla sintassi dei costrutti. 03/06/17 10.34 2 Costrutto SELECT SELECT [predicato] { * | tabella.* | [tabella.]campo1 [AS alias1] [, [tabella.]campo2 [AS alias2] [, ...]]} FROM espressionetabella [, ...] [IN databaseesterno] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ]; L'istruzione SELECT è composta dalle parti descritte di seguito. Parte Descrizione predicato Uno dei seguenti predicati: ALL, DISTINCT, DISTINCTROW, TOP. Il predicato viene utilizzato per limitare il numero di record restituiti. Se non è specificato alcun predicato, quello predefinito è ALL. Specifica di selezionare tutti i campi della tabella o delle tabelle specificate. Nome della tabella contenente i campi da cui vengono selezionati i record. Nomi dei campi da cui recuperare i dati. Se si include più di un campo, i dati vengono recuperati nell'ordine elencato. Nomi da utilizzare come intestazioni di colonna al posto dei nomi di colonna originali in tabella. Nome della tabella o delle tabelle contenenti i dati che si desidera recuperare. Nome del database contenente le tabelle presenti in espressionetabella se non si trovano nel database corrente. * Tabella Campo1, campo2 Alias1, alias2 Espressionetabella Databaseesterno Osservazioni Le query vanno sempre terminate dal punto e virgola. Ad es., SELECT Nome FROM Studenti ; (terminata da ‘;’). Le proposizioni WHERE, ORDER BY, GROUP BY, HAVING ecc. sono opzionali. Per eseguire una SELECT, il modulo di gestione di database Microsoft Jet effettua la ricerca nella tabella o nelle tabelle specificate, estrae le colonne prescelte, seleziona le righe che soddisfano il criterio di ricerca e ordina o raggruppa le righe nell'ordine specificato. Le istruzioni SELECT non modificano i dati del database. La sintassi minima di un'istruzione SELECT è: SELECT campi FROM tabella; Per selezionare tutti i campi di una tabella è possibile utilizzare un asterisco (*). Nel seguente esempio vengono selezionati tutti i campi della tabella Impiegati: SELECT * FROM Impiegati; Se un nome di campo è incluso in più di una tabella nella proposizione FROM, farlo precedere dal nome della tabella e dall'operatore ‘punto’ (ad es. Studenti.Nome). Nell'esempio seguente, il campo Reparto si trova sia nella tabella Impiegati che nella tabella Superiori. L'istruzione SQL seleziona Reparto dalla tabella Impiegati e NomeSup dalla tabella Superiori: SELECT Impiegati.Reparto, Superiori.NomeSup; FROM Impiegati, Superiori WHERE Impiegati.Reparto = Superiori.Reparto; Ogni volta che si utilizzano funzioni di aggregazione o query che restituiscono nomi di oggetti Field ambigui o duplicati, è necessario utilizzare la proposizione AS per fornire un nome alternativo per l'oggetto Field. Nel seguente esempio viene utilizzato il titolo Risultato conteggio per denominare l'oggetto Field restituito nell'oggetto Recordset risultante: SELECT COUNT(IDImpiegato) AS RisultatoConteggio FROM Impiegati; 03/06/17 10.34 3 Per limitare e organizzare ulteriormente i dati restituiti, è possibile utilizzare le altre proposizioni di un'istruzione SELECT. Quando si usa la clausola GROUP BY per raggruppare tuple di una relazione: Nella clausola SELECT devono comparire o funzioni aggregate (AVG, MAX, COUNT, ecc.) o nomi di attributi che compaiono anche nella clausola GROUP BY, ad es.: SELECT Cognome, Count(*) FROM Studenti GROUP BY Cognome; Per ulteriori informazioni, vedere l'argomento della Guida relativo alla proposizione che si sta utilizzando. Subquery Una sottoquery è un'istruzione SELECT nidificata in un'istruzione SELECT oppure in un'altra sottoquery. Per creare una sottoquery, è possibile utilizzare tre forme di sintassi: confronto [ANY | ALL | SOME] (istruzionesql) espressione [NOT] IN (istruzionesql) [NOT] EXISTS (istruzionesql) Una sottoquery è composta dalle parti descritte di seguito. Parte confronto espressione istruzionesql Descrizione Espressione e operatore di confronto che confronta l'espressione con i risultati della sottoquery. Espressione che viene ricercata nel set di risultati della sottoquery. Istruzione SELECT, che segue lo stesso formato e le stesse regole di ogni altra istruzione SELECT. Deve essere racchiusa tra parentesi. Osservazioni È possibile utilizzare una sottoquery al posto di un'espressione nell'elenco dei campi di un'istruzione SELECT o in una proposizione WHERE o HAVING. In una sottoquery, è possibile utilizzare un'istruzione SELECT per fornire un set di uno o più valori specifici da valutare nell'espressione della proposizione WHERE o HAVING. Utilizzare il predicato ANY o SOME, che sono sinonimi, per recuperare i record nella query principale che soddisfano il confronto con tutti i record recuperati nella sottoquery. Nell'esempio seguente vengono restituiti tutti i prodotti il cui prezzo unitario è maggiore di quello di qualsiasi prodotto venduto con uno sconto del 25 per cento o maggiore: SELECT * FROM Prodotti WHERE PrezzoUnitario > ANY (SELECT PrezzoUnitario FROM DettagliOrdini WHERE Sconto >= .25); Utilizzare il predicato ALL per recuperare solo quei record nella query principale che soddisfano il confronto con tutti i record recuperati nella sottoquery. Se nell'esempio precedente si modifica ANY in ALL, la query restituirà solo quei prodotti il cui prezzo unitario è maggiore di quello di tutti i prodotti venduti con uno sconto del 25 per cento o maggiore. Ciò è molto più limitativo. Utilizzare il predicato IN per recuperare solo quei record della query principale per i quali esistono nella sottoquery dei record con lo stesso valore. Nell'esempio seguente vengono restituiti tutti i prodotti con uno sconto del 25 per cento o maggiore: SELECT * FROM Prodotti WHERE IDProdotto IN (SELECT IDProdotto FROM DettagliOrdini WHERE Sconto >= .25); Viceversa, è possibile utilizzare NOT IN per recuperare solo quei record della query principale per i quali non esistono nella sottoquery dei record con lo stesso valore. Utilizzare il predicato EXISTS con la parola riservata NOT opzionale nei confronti true/false per determinare se la sottoquery restituisce dei record. 03/06/17 10.34 4 In una sottoquery è possibile inoltre utilizzare alias di nomi di tabella per fare riferimento alle tabelle elencate in una proposizione FROM esterna alla sottoquery. Nell'esempio seguente vengono restituiti i nomi degli impiegati il cui stipendio è uguale o maggiore allo stipendio medio degli impiegati che hanno la stessa posizione. Alla tabella Impiegati viene dato l'alias "T1": SELECT Cognome, Nome, Posizione, Stipendio FROM Impiegati AS T1 WHERE Stipendio >= (SELECT Avg(Stipendio) FROM Impiegati WHERE T1.Posizione = Impiegati.Posizione) Order by Posizione; Nell'esempio precedente la parola riservata AS è opzionale. Alcune sottoquery sono consentite nelle query a campi incrociati, soprattutto come predicati come, ad esempio, nella proposizione WHERE. Le sottoquery come output, ad esempio quelle nell'elenco SELECT, non sono consentite nelle query a campi incrociati. Costrutto LIKE Sitassi: Espressione LIKE "Criterio di ricerca" Espressione Criterio di ricerca Espressione SQL utilizzata in una proposizione WHERE. Stringa o carattere visualizzato con il quale viene confrontata espressione. Osservazioni È possibile utilizzare l'operatore Like per ricercare in un campo di valori che corrispondono al criterio di ricerca specificato. Per criteriodiricerca è possibile specificare il valore completo come, ad esempio, Like "Rossi" oppure si possono utilizzare i caratteri jolly per ricercare un intervallo di valori come, ad esempio, Like "Ro*". In un'espressione, è possibile utilizzare l'operatore Like per confrontare un valore di campo con un'espressione stringa. Se, ad esempio, si immette Like "C*" in una query SQL, essa restituirà tutti i valori di campo che iniziano con la lettera C. In una query con parametri, è possibile richiedere all'utente di specificare un criterio di ricerca. Nell'esempio seguente vengono restituiti i dati che iniziano con la lettera P seguita da qualsiasi lettera compresa tra A e F e tre cifre: Like "P[A-F]###" Nella tabella seguente viene mostrato come utilizzare l'operatore Like per valutare le espressioni in base a differenti criteri di ricerca. Tipo di corrispondenza Caratteri multipli Carattere speciale Caratteri multipli Carattere singolo Cifra singola Intervallo di caratteri Non compresa in un intervallo Non è una cifra Combinata Criterio di ricerca a*a *ab* a[*]a ab* a?a a#a [a-z] [!a-z] [!0-9] a[!b-m]# OK aa, aBa, aBBBa abc, AABB, Xab a*a abcdefg, abc aaa, a3a, aBa a0a, a1a, a2a f, p, j 9, &, % A, a, &, ~ An9, az0, a99 03/06/17 10.34 5 NO aBC aZb, bac aaa cab, aab aBBBa aaa, a10a 2, & b, a 0, 1, 9 abc, aj0