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')
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Esercizi di Algebra Relazionale
-
Algebra, Calcolo relazione e SQL
-
Esercizi Basi Di Dati Algebra Relazionale
-
Algebra lineare