CAPITOLO 2 QUERY Le basi di dati per Economia Interrogare un database Una Query è una domanda posta al database per estrarre e manipolare dei dati. È un insieme di istruzioni per trovare informazioni in una o più tabelle tra loro correlate. Le istruzioni possono prevedere condizioni per l’estrazione dei dati o definire un ordine di visualizzazione. Il linguaggio più comunemente usato per formulare query è SQL, tuttavia Access utilizza l’interfaccia QBE (Query by Example). Alla base di una query ci sono le relazioni tra tabelle (già inserite o create automaticamente in fase di interrogazione). Tipi di Query • Query di selezione. Estrae dati da una o più tabelle e li rende disponibili tramite fogli di lavoro, maschere, report, pagine HTML. I dati estratti sono modificabili. Si possono effettuare calcoli e raggruppamenti. • Query di aggiornamento. Consente la modifica di uno o più campi di una o più tabelle per interi gruppi di record. • Query di eliminazione. Consente l’eliminazione di un gruppo di record da una o più tabelle. • Query di creazione tabella. I record vengono immessi in una nuova tabella. • Query di accomodamento. Aggiunge un gruppo di record alla fine di una o più tabelle. • Query a campi incrociati. Aggrega i dati mettendo in relazione i campi di una tabella. • Query parametrica. Chiede la specificazione dei campi di ricerca. Query di selezione basate su una sola tabella • Dal database corso di studi visualizzare tutti i nomi dei corsi in ordine alfabetico crescente: 1. Dalla Finestra database cliccare su Query 2. Scegliere Crea una query in visualizzazione Struttura 3. Dalla scheda Tabelle della finestra Mostra tabelle aggiungere Corsi 4. Trascinare il campo da visualizzare e scegliere l’ordinamento • Dal database corso di studi visualizzare il nome del Prof. Coates: Nell’opzione Criteri si immette il cognome cercato. Access cercherà il valore esatto • Dal database ml visualizzare, per data crescente, i record relativi alle persone che non sono in età lavorativa (al 19/05/2009): Si cercano le persone sotto i 15 anni e sopra i 64. Si immettono due Criteri utilizzando operatori di confronto. In alternativa si possono combinare con Or Query di selezione basate su più tabelle (1) Una join è un tipo di query che consente di selezionare i dati da due o più tabelle. Si devono inserire tutte le tabelle da cui si selezionano i dati dalla scheda Tabelle della finestra Mostra tabelle. Le tabelle devono essere in relazione, che può essere creata al momento o rilevata automaticamente se i campi hanno lo stesso nome e contengono dati dello stesso tipo. • Dal database ml visualizzare le posizioni lavorative di tutte le persone del Centro Italia: 1. Dalla Finestra database cliccare su Query 2. Scegliere Crea una query in visualizzazione Struttura 3. Dalla scheda Tabelle della finestra Mostra tabelle aggiungere persona, paese, posizione 4. Trascinare i campo da visualizzare ed immettere la condizione Query di selezione basate su più tabelle (2) Il campo CF è stato rinominato (solo per ciò che concerne la visualizzazione) anteponendo al nome del campo “codice fiscale:”. Query di selezione basate su più tabelle (3) • Dal database corso di studi visualizzare gli esami tenuti dal Prof. Mason: • Dal database corso di studi visualizzare gli esami sostenuti dal Mario Bianchi: Query di selezione basate su più tabelle (4) Tramite le funzioni di aggregazione è possibile eseguire operazioni sui dati nella query. • Dal database corso di studi calcolare la media voto data dalla Professoressa Parpinel distinguendo per corso: • Dal database corso di studi calcolare la media voto di Mario Bianchi: Query di selezione basate su più tabelle (5) • Calcolare il numero di sessioni sostenute dal Prof. Mason (con e senza la distinzione per corso). • Calcolare il numero di esami sostenuti dalla studentessa Maria Bianchi. • Calcolare la media dei voti di tutti gli studenti con cognome Bianchi (aggregati e distinti per nome). • Calcolare per tutti gli studenti la media voto ed il numero degli esami svolti. • Calcolare il numero totale degli esami sostenuti dagli studenti Maria Bianchi e Mario Verdi • Visualizzare gli studenti che hanno superato esami (non l’idoneità) del Prof. Coates Query di aggiornamento (1) • Nel database ml aggiornare (al 19/05/09) lo stato dei pensionati (almeno 65 anni di età) in modo tale che risulti il codice 3 (inattivo): 1. Dalla Finestra database cliccare su Query 2. Scegliere Crea una query in visualizzazione Struttura 3. Al posto della Query di selezione ( ) selezionare Query di aggiornamento ( ) 4. Dalla scheda Tabelle della finestra Mostra tabelle aggiungere persona, posizione 5. Trascinare i campi datanascita e stato, immettere i criteri di aggiornamento e il valore aggiornato. 6. Aggiornare con il comando Query/Esegui oppure con Query di aggioramento (2) • Causa un errore di registrazione è necessario modificare la data (23/06/2007 errata, 17/06 corretta) degli esami di Strategia e politica aziendale I nel database corso di studi: • Con una legge a favore della deprecarizzazione del lavoro si impone che tutti i lavoratori del Sud, dipendenti full time, impiegati a tempo determinato nei settori Agricoltura e Costruzioni in data 1/1/2004 vengano assunti a tempo indeteminato. Si aggiorni il database ml: Query di eliminazione • Dalla tabella Studenti database corso di studi eliminare i record relativi agli studenti fuori corso (fino alla matricola 707315): 1. Dalla visualizzazione Struttura scegliere Query di eliminazione 2. Dalla scheda Tabelle della finestra Mostra tabelle aggiungere Studenti. 3. Trascinare il campo Matricola ed immettere il criterio <=707315 4. Esegendo la Query può accadere: a. Si eliminano i record nella sola tabella Studenti se non è applicata l’integrità referenziale b. Si eliminano anche i record collegati alle matricole cancellate se è selezionata l’opzione relativa c. Appare un messaggio d’errore e la Query non verrà eseguita se è applicata l’integrita referenziale ma non l’eliminazione a catena dei record correlati Query di creazione tabella (1) • Nel database corso di studi creare una nuova tabella relativa agli studenti meritevoli di borsa di studio (esami>10, media>25): 1. Dalla visualizzazione Struttura scegliere Query di creazione tabella ed assegnare il nome alla nuova tabella. 2. Dalla scheda Tabelle della finestra Mostra tabelle aggiungere Studenti, Esami. 3. Trascinare i campi da utilizzare, inserire le formule conteggio di voto e media di voto, immettere i criteri conteggio>10 e media>25. 4. Eseguire la Query. 5. Scegliere le proprietà dei campi della nuova tabella. Query di creazione tabella (2) • Nel database ml creare una nuova tabella relativa alle posizioni delle persone con la dicitura completa delle informazioni. I risultati di una query di questo tipo dipendono dal tipo di join usato: 1. Inner Join, appaiono solo i record con doppia corrispondenza. 2. Left Join, tutti i record della tabella primaria. 3. Right Join , tutti i record della tabella correlata. Query di creazione tabella (3) • Nel database corso di studi creare una nuova tabella con l’elenco degli studenti che hanno preso almeno un voto superiore al 26. I risultati dipendono dall’impostazione dei Valori univoci data nella scheda che si apre tramite Visualizza/Proprietà. Query di accodamento • Nel database corso di studi aggiungere alla tabella borsa di studio gli studenti con più di 8 esami sostenuti (anzichè 10) purchè con media superiore a 25,5. 1. Dalla visualizzazione Struttura scegliere Query di accodamento ed indicare il nome della tabella che riceverà i nuovi dati. 2. Dalla scheda Tabelle della finestra Mostra tabelle aggiungere Studenti, Esami. 3. Trascinare i campi da utilizzare, inserire le formule conteggio di voto e media di voto, immettere i criteri conteggio>8 e media>25.5. 4. Eseguire la Query. Query a campi incrociati (1) • Nel database corso di studi si vuole determinare la media voto data dai diversi professori in ogni singola sessione: 1. Dalla visualizzazione Struttura scegliere Query a campi incrociati 2. Dalla scheda Tabelle della finestra Mostra tabelle aggiungere Docenti, Corsi, Esami. 3. Trascinare i campi da utilizzare, indicare se vanno considerati intestazioni per le righe, per le colonne o valori, inserire le formule. 4. Eseguire la Query. Query a campi incrociati (2) • Nel database ml analizzare la tipologia di lavoro nei diversi settori nel 2004. Query di query e generatore di espressioni (1) • Nel database ml si vogliono determinare i principali indicatori del mercato del lavoro (al 01/01/2004): 1. Si creano delle Query di selezione per determinare il numero di persone in cerca di occupazione, occupate, in età lavorativa. Query di query e generatore di espressioni (2) 2. Si creano delle Query che costruiscano delle formule basate sui valori selezionati dalle query precedenti (query di query). 3. Se le opzioni previste dalle formule non sono sufficienti per determinare il risultato si può far ricorso al generatore di espressioni inserendo l’operazione da calcolare direttamente nella voce Campo. Query di query e generatore di espressioni (3) 4. Dopo il calcolo del tasso di disoccupazione vogliamo determinare quelli di occupazione e di attività: Query ricerca duplicati (1) • Nel database corso di studi visualizzare i corsi che presentano lo stesso professore: 1. Dal menu Nuovo scegliere la creazione guidata di una Query di ricerca duplicati. 2. Selezionare la tabella (Corsi) e i campi in cui ci sono i dati duplicati (IdDocente). 3. Scegliere se visualizzare altri campi. 4. Nominare la tabella. 5. Visualizzare la struttura della query ed aggiungendo la tabella Docenti, visualizzare Cognome e Nome dei professori. Query ricerca duplicati (2) • Nel database corso di studi verificare quali voti sono i più comuni (dati oltre 40 volte): 1. Dal menu Nuovo scegliere la creazione guidata di una Query di ricerca duplicati. 2. Selezionare la tabella (Esami) e i campi (Voto) in cui ci sono i dati duplicati. 3. Scegliere di non visualizzare altri campi. 4. Nominare la tabella. 5. Visualizzare la struttura della query e modificare la condizione (>40 anziché >1). Query ricerca dati non corrispondenti • Nel database corso di studi visualizzare gli studenti che non hanno ancora sostenuto esami: 1. Dal menu Nuovo scegliere la creazione guidata di una Query di ricerca duplicati. 2. Selezionare la tabella (Studenti) della quale saranno riportati i dati che non trovano corrispondenza con la tabella successiva. 3. Selezionare la tabella nella quale si cercano i dati corrispondenti (Esami). 4. Selezionare i campi corrispondenti tra le due tabelle (le matricole). 5. Selezionare i campi da visualizzare nei risultati. 6. Nominare la query. Query parametriche • Nel database corso di studi creare una query di creazione tabella relativa agli studenti meritevoli di borsa di studio (con esami e media variabili): 1. Creare una Query di creazione tabella. 2. Nei criteri inserire la condizione inserendo all’interno di una stringa tra parentesi quadre [ ] una frase che indichi di inserire il parametro. 3. Ogni volta che si esegue la query occorre inserire questi 2 parametri