



Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Una guida dettagliata per scrivere query SQL efficaci, comprensive di esempi pratici e spiegazioni su come selezionare campi specifici, creare relazioni tra tabelle, utilizzare operazioni come DISTINCT, INSTR, MID, SUM, COUNT, CONCAT e AVG, e risolvere esercizi di query SQL. Il documento include anche informazioni su come capire le relazioni in un database, creare una query e utilizzare i comandi DISTINCT, LEFT e RIGHT, NOT, BETWEEN, LIKE, GROUP BY e HAVING.
Tipologia: Appunti
1 / 5
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!




SELECT scrivo i campi che voglio vedere (nome tabella +nome colonna es. Clienti.Città) FROM ci sono le tabelle che ho usato nel select WHERE scrivo: Eventuali relazioni tra tabelle(quando sono due o tre vanno inserite, se è una non ce problema) Condizioni particolari x es voglio vedere i clienti SOLO di Milano oppure i cognomi che iniziano con L Se ho più condizioni- OR, AND, NOT per cui se voglio vedere il nome degli studenti che inizia per “A ” e per “B”, uso OR Attenzione a non usare AND perché un cognome non può iniziare sia per A sia per B RICORDA: Alla fine di ogni query metti ;
DISTINCT filtra i doppioni se nel risultato mi esce una tabella con tante righe uguali, anche se non lo SELECT DISTINCT Clienti.Città chiede posso usare distinct senò il pagliaccio si offende FROM Città ; ***** ci fa vedere tutti i campi o record **SELECT *** FROM Ordini WHERE Ordini.Quantità=12; INSTR mi dice la posizione del carattere dove esiste la parola SELECT Clienti.Denominazione, INSTR(Clienti.Denominazione,"ar") AS estrazione_Instr FROM Clienti; in questo caso mi uscirà una colonna “denominazione” e una colonna con dei numeri che indicano a che numero si trova “ar” MID estrai una stringa da un campo SELECT (Clienti.nome, 4, 5) in questo caso gli sto dicendo: estrai 5 caratteri a partire dal FROM clienti ; quarto MAST RECCH IA QUINDI IL RISULTATO è SOLO RECHH SUM fa una somma RECORD = riga CAMPI = colonne
SELECT Clienti.Denomiazione SUM(Clienti.Ordini) se voglio vedere alter colonne ma senza sommarle le FROM Clienti; metto prima di SUM. (Clienti.Denominazione ovviamente
. non verrà sommata) DISTINCT COUNT se per es voglio estrarre il numero totale di province di residenza dei clienti, crea una unica casella SELECT DISTINCT COUNT (Clienti.provincia) Milano+Torino+Torino=2 (perché ‘è distinct che filtra i doppioni) FROM Clienti; CONCAT concatena insieme le diverse colonne creandone una sola, mi usciranno le colonne che ho concatenato in una colonna solo. Se l’es mi dice “concatena” so che uso concat. SELECT Clienti.Denominazione, Clienti.Denominazione & " ----------- " & Ordini.IDProdotto AS Concatenazione FROM Clienti, Ordini; COUNT per effettuare conteggi, summa il numero di celle, non i numeri al suo interno.(il risultato sarà una sola casella) SELECT COUNT(Ordini.Data) infatti in questo caso le date non si possono sommare FROM Ordini WHERE Ordini.Quantità=12; AVG per la media SELECT AVG(Ordini.Quantità) FROM Ordini; LEFT e RIGHT SELECT Clienti.Denominazione, LEFT(Clienti.Denominazione,5) AS estrazione_sinistra FROM Clienti; left = conto da sinistra sinistra vs destra right = conto da destra vs sinistra
SELECT Ordini.Quantità FROM Ordini WHERE Ordini.Quantità>10 OR Ordini.Quantità<5; in questo modo escludo gli estremi BETWEEN nel caso mi dice SELECT Ordini.Quantità FROM Ordini WHERE Ordini.Quantità BETWEEN 10 AND 15; in questo caso considero gli estremi inclusi LIKE per esempio se voglio trovare i cognomi che iniziano per “M” WHERE Denominazione like "s*"; GROUP BY
Q3) Si devono estrarre descrizione e prezzo unitario dei prodotti acquistati a febbraio 2015, giugno 2015 e luglio 2015 SELECT Prodotti.Descrizione, Prodotti.Prezzo_unitario FROM Prodotti, Ordini WHERE Ordini.IDprodotto=Prodotti.CodiceProdotto AND ((Ordini.Data BETWEEN #02/01/2015# AND #02/28/2015#) OR (Ordini.Data BETWEEN #06/01/2015# AND #06/30/2015#)OR (Ordini.Data BETWEEN #07/01/2015# AND #07/31/2015#)); Q4) Si devono estrarre descrizione e prezzo unitario dei prodotti acquistati a febbraio 2015, giugno 2015 e luglio 2015, ma solo per i prodotti con il codice contenente 03 SELECT Prodotti.Descrizione, Prodotti.Prezzo_unitario FROM Prodotti, Ordini WHERE Ordini.IDprodotto=Prodotti.CodiceProdotto AND ((Ordini.Data BETWEEN #02/01/2015# AND #02/28/2015#) OR (Ordini.Data BETWEEN #06/01/2015# AND #06/30/2015#)OR (Ordini.Data BETWEEN #07/01/2015# AND #07/31/2015#)AND Prodotti.CodiceProdotto LIKE "03*"); Q5) Per ogni codice di prodotto si devono estrarre il codice, il valore medio ed il valore massimo degli ordini effettuati SELECT Prodotti.CodiceProdotto, AVG(Ordini.Quantità), MIN(Ordini.Quantità) FROM Prodotti, Ordini WHERE Ordini.IDprodotto=Prodotti.CodiceProdotto GROUP BY Prodotti.CodiceProdotto; (per usare: MIN; MAX; AVG. Faccio OPERATORE(CAMPO) ) Q6) Per ogni codice di prodotto si devono estrarre il codice, la descrizione, il valore medio ed il valore massimo degli ordini effettuati SELECT Prodotti.CodiceProdotto,Prodotti.Descrizione, AVG(Ordini.Quantità), MIN(Ordini.Quantità) FROM Prodotti, Ordini WHERE Ordini.IDprodotto=Prodotti.CodiceProdotto GROUP BY Prodotti.CodiceProdotto, Prodotti.Descrizione; (quando leggo “per ogni so che utilizzerò group by”) Q7) Per ogni codice di prodotto si devono estrarre il codice, la descrizione, il valore medio ed il valore massimo degli ordini effettuati, ma solo quando il valore massimo degli ordini è maggiore o uguale a 18 SELECT Prodotti.CodiceProdotto,Prodotti.Descrizione, AVG(Ordini.Quantità), MIN(Ordini.Quantità) FROM Prodotti, Ordini WHERE Ordini.IDprodotto=Prodotti.CodiceProdotto GROUP BY Prodotti.CodiceProdotto, Prodotti.Descrizione HAVING MAX(Ordini.Quantità)>18 OR MAX(Ordini.Quantità=18);
quando mi ha scritto “per ogni” e quindi ho il Group by e il prof mi ha da una condizione non la scrivo nel where ma uso HAVING