Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
INTERROGAZIONI CON USO DI PIÙ OPERATORI
Esercizio 1: Facoltà (CodFac, Descrizione, Città)
Studenti (Matricola, Cognome, Nome, Indirizzo, CodFac)
Mostrare il Cognome, Nome e Descrizione della facoltà per gli studenti che risiedono a Milano.
Le domande che ci si deve porre sono:
- Quali campi devo mostrare? = Cognome, Nome, Descrizione
- Dove devo prendere questi campi?
- Cognome in Studenti
- Nome in Studenti
- Descrizione in Facoltà
- Ci sono delle condizioni? Se SI, devo porre delle condizioni.
- Studenti che risiedono a Milano -> Studenti.Indirizzo = Milano
- I campi su cui faccio la proiezione sono tutti in un'unica tabella? Se NO, devo collegare le tabelle.
- Si prende la chiave esterna di una tabella e si collega alla chiave primaria dell'altra tabella. Studenti.CodFac = Facoltà.CodFac
Esercizio 2:
Ogni rivista può essere oggetto di uno o più abbonamenti.
Ogni abbonamento deve avere come oggetto una sola rivista.
Ogni abbonamento deve essere sottoscritto da un solo abbonato.
Ogni abbonato deve sottoscrivere uno o più abbonamenti.
Modello relazionale:
Avrò 3 tabelle (Rivista, Abbonamento, Abbonato).
I campi delle tabelle sono gli attributi (CodRiv, Titolo, Periodicità, Prezzo...).
Bisogna creare la relazione:
Tra Rivista e Abbonamento: l'associazione è 1:N, quindi la chiave primaria di Rivista diventerà chiave esterna di Abbonamento.
Tra Abbonamento e Abbonato: l'associazione è N:1, quindi la chiave primaria di Abbonamento diventerà chiave esterna di Abbonato.
Infine:
Riviste (CodRiv, Titolo, Periodicità, Prezzo)
Abbonamenti (ID, Data, CodRiv, CodAbb)
Abbonati (CodAbb, Cognome, Indirizzo, Città)
Lezione 12 - (09/11/2021)
LINGUAGGIO SQL (Structured Query Language)
COMANDO SELECT:
Il comando obbligatorio è: ```htmlAttiva le interrogazioni sulle tabelle: implementa le operazioni relazionali per ottenere nuove tabelle.
``` La sintassi di SELECT è: ```htmlSINTASSI DI SELECT
- SELECT nomi delle colonne da elencare separati da virgola (tutti gli attributi / campi= *) (cosa devo mostrare?).
- FROM il nome o i nomi delle tabelle utilizzate nell'interrogazione (quelle che ci servono) (ci sono più tabelle?).
- WHERE condizione da controllare sui valori delle righe (anche più condizioni con AND OR e NOT) (ci sono condizioni?) (ci sono più tabelle?).
SELECT DISTINCT… le righe duplicate nella tabella risultante vengono tradotte a una.
``` Esempio di SELEZIONE: ```htmlSELEZIONE
Esempio: Ogni movimento deve essere correlato ad una sola anagrafica.
Ogni anagrafica può correlarsi a più movimenti.
Modello relazionale:
Movimenti (CodMovimenti, Descrizione, Data, Importo, CodAnagrafiche)
Anagrafiche (CodAnagrafiche, Nome, Indirizzo)
Elenco delle anagrafiche con Indirizzo = "Milano"
SELECT Anagrafiche.*
FROM Anagrafiche
WHERE
```
Indirizzo=‘Milano’;
Elenco delle anagrafiche con Indirizzo variabile
SELECT Anagrafiche.*
FROM Anagrafiche
WHERE Indirizzo=[Quale Indirizzo];
PROIEZIONE
Elenco dei codici e dei nomi delle anagrafiche
SELECT DISTINCT CodAnagrafiche, Nome
FROM Anagrafiche;
Elenco dei movimenti con data e importo
SELECT DISTINCT Data, Importo
FROM Movimenti;
CONGIUNZIONE
Elenco dei movimenti con i dati anagrafici a essi relativi
SELECT Nome, Indirizzo, Movimenti.*
FROM Anagrafiche, Movimenti
WHERE Anagrafiche.CodAnagrafiche=Movimenti.CodAnagrafiche;
USO DI PIÙ OPERATORI
Elenco dei movimenti con Nome e Importo riferiti alle Anagrafiche aventi un indirizzo prefissato.
SELECT Nome, Importo
FROM Anagrafiche, Movimenti
WHERE Anagrafiche.CodAnagrafiche=Movimenti.CodAnagrafiche
AND Indirizzo=[Quale Indirizzo];
SELECT… FROM… WHERE
• SELECT = Proiezioni, Ridenominazioni, Calcoli
• FROM = Prodotti cartesiani, Join
• WHERE = Selezioni, Condizioni di join
Congiunzione SQL in Access
In questo caso,
prefissata.SELECT Sum(Importo)FROM MovimentiWHERE Importo>[Quale importo minimo];FUNZIONE MEDIACalcola la media degli importi per i movimenti superiori a una cifra prefissata.SELECT Avg(Importo)FROM MovimentiWHERE Importo>[Quale importo minimo];FUNZIONE MASSIMORestituisce il valore massimo degli importi per i movimenti superiori a una cifra prefissata.SELECT Max(Importo)FROM MovimentiWHERE Importo>[Quale importo minimo];FUNZIONE MINIMORestituisce il valore minimo degli importi per i movimenti superiori a una cifra prefissata.SELECT Min(Importo)FROM MovimentiWHERE Importo>[Quale importo minimo];SELECT Sum(Importo) FROM Movimenti WHERE Importo>[Cifra prefissata];
SELECT Sum(Importo) FROM Movimenti AS M, Anagrafiche AS A WHERE M.Codice=A.Codice AND Indirizzo=[Quale indirizzo];
FUNZIONE MEDIA Media degli importi per i movimenti aventi una descrizione prefissata SELECT AVG(Importo) FROM Movimenti WHERE Descrizione=[Quale descrizione];
FUNZIONE MINIMO, MASSIMO Restituiscono rispettivamente il valore minimo e il valore massimo tra i valori della colonna specificata come argomento della funzione (anche per campi di tipo Testo e Data). Valore massimo per gli importi dei movimenti di un'anagrafica avente un nome prefissato SELECT MAX(Importo) FROM Movimenti, Anagrafiche WHERE Movimenti.Codice=Anagrafiche.Codice AND Nome=[Quale nome];
Valore minimo e numero degli importi dei movimenti di un'anagrafica avente un nome prefissato SELECT MIN(Importo), COUNT(Importo) FROM Movimenti, Anagrafiche,Anagrafiche WHERE Movimenti.Codice=Anagrafiche.Codice AND Nome=[Quale nome]; Lezione 13 - (10/11/2021) Esercizi svolti in laboratorio su Access. Lezione 14 - (11/11/2021) GLI ORDINAMENTI ORDER BY Ø GROUP BY Ø HAVING La clausola ORDER BY consente di ottenere i risultati di un'interrogazione ordinati secondo i valori contenuti in una o più colonne, tra quelle elencate accanto alla parola Select. Esempio: Elenco alfabetico delle anagrafiche. SELECT Codice, Cognome, Nome, Indirizzo FROM Anagrafiche ORDER BY Cognome, Nome; ORDINAMENTO: CRESCENTE/DECRESCENTE - Ordinamento crescente: ASC (di default) Stringhe dalla A alla Z, numeri dal minore al maggiore. - Ordinamento decrescente: DESC Stringhe dalla Z alla A, numeri dal maggiore al minore. Anagrafiche (Codice, Cognome, Nome, Indirizzo) Movimenti (ID, Descrizione, Data, Importo, Codice) Esempio ordinamento decrescente: Codice delle anagrafiche e importo dei movimenti in ordine decrescente di valore. SELECT Codice, Importo FROM Anagrafiche ORDER BY Codice DESC, Importo DESC;Nome, Count(*) FROM Anagrafiche GROUP BY Indirizzo, Cognome
SELECT Count(*) FROM Anagrafiche WHERE Città = 'Milano';
Conta quante persone hanno più di 30 anni
SELECT Count(*) FROM Anagrafiche WHERE Età > 30;
Conta quante persone hanno lo stesso cognome
SELECT Cognome, Count(*) FROM Anagrafiche GROUP BY Cognome HAVING Count(*) > 1;
Conta quante persone hanno lo stesso cognome e vivono a Milano
SELECT Cognome, Count(*) FROM Anagrafiche WHERE Città = 'Milano' GROUP BY Cognome HAVING Count(*) > 1;
- Anagrafiche
- WHERE Indirizzo='Milano'
- Elenco delle città con più di 10 persone
- SELECT Indirizzo
- FROM Anagrafiche
- GROUP BY Indirizzo
- HAVING Count(*) > 10
- CLAUSOLE DI SELECT
- Select (indispensabile) (tabelle oggetto)
- From (seleziona le righe indicate nel where)
- Where
- Group by (forma gruppi di righe)
- Having (controlla le condizioni sui gruppi di righe)
- Order by (riordina le righe)
- LE CONDIZIONI DI RICERCA all'interno di WHERE
- Utilizzate insieme a where per determinare i criteri di selezione delle righe
- Segni del confronto =, <, >, <>, >=, <=
- Più condizioni legate tra loro con gli operatori AND e OR, precedute eventualmente dall'operazione NOT.
- Predicati: BETWEEN, LIKE, IN Condizione BETWEEN
- Controlla se un valore è compreso all'interno di un intervallo di valori, inclusi estremi.
- Elenco dei movimenti con importo compreso tra 1000 e 2000.
- SELECT *
- FROM Movimenti
- WHERE Importo Between
1000 and 2000; Condizione IN
Controlla le righe che hanno i valori di un attributo compresi in una lista di valori indicati dopo la parola In. Controlla se il valore che assume quel campo è all'interno di quell'insieme di valori.
Elenco delle anagrafiche con indirizzo Milano, Torino o Venezia.
SELECT * FROM Anagrafiche WHERE Indirizzo IN ('Milano', 'Torino', 'Venezia')