Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Guida pratica per scrivere query SQL: campi, relazioni, operazioni e esercizi, Appunti di Informatica

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

2020/2021

Caricato il 03/04/2021

alicevsw
alicevsw 🇮🇹

5

(1)

6 documenti

1 / 5

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
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 ;
1. LE DATE #mese/giorno/anno# sempre tra #, non tra apici
2. IL TESTO fra apici
3. I NUMERI non serve nulla
4. Alla fine di ogni query metti ;
COME CAPIRE QUALI SOLO LE RELAZIONI NEL DATABASE
1. Devo essere in una tabella e non in una query
2. Clicco su HOME- Visualizza(in alto a destra, cliccando ovviamente sulla freccetta su quel tasto)
3. Visualizza struttura
4. Ora la penultima opzione verso destra: “relazioni”
Se FROM Clienti, Ordini, Prodotti
Clienti.NumPartitaIVA=Ordini.NUmPartitaIVA
AND Ordini.IDprodotto=Prodotti.Codici.prodotti
Se FROM Clienti, Ordini
Clienti.NumPartitaIVA=Ordini.NUmPartitaIVA
Se FROM Ordini, Prodotti
AND Ordini.IDprodotto=Prodotti.CodiceProdotto
Se FROM Clienti, Prodotti
Non ci sono relazioni, quindi non scrivo nulla
COME CREARE UNA QUERY
1. Crea
2. Struttura QUERY
3. Vi si aprirà una tabella , clicca chiudi
4. Tasto destro- visualizza linguaggio sql
5. Poi ricordati di salvare la query
LE QUERY
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
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Guida pratica per scrivere query SQL: campi, relazioni, operazioni e esercizi e più Appunti in PDF di Informatica solo su Docsity!

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 ;

  1. LE DATE #mese/giorno/anno# sempre tra #, non tra apici
  2. IL TESTO fra apici
  3. I NUMERI non serve nulla
  4. Alla fine di ogni query metti ; COME CAPIRE QUALI SOLO LE RELAZIONI NEL DATABASE
    1. Devo essere in una tabella e non in una query
    2. Clicco su HOME- Visualizza(in alto a destra, cliccando ovviamente sulla freccetta su quel tasto)
    3. Visualizza struttura
    4. Ora la penultima opzione verso destra: “relazioni”  Se FROM Clienti, Ordini, Prodotti Clienti.NumPartitaIVA=Ordini.NUmPartitaIVA AND Ordini.IDprodotto=Prodotti.Codici.prodotti  Se FROM Clienti, Ordini Clienti.NumPartitaIVA=Ordini.NUmPartitaIVA  Se FROM Ordini, Prodotti AND Ordini.IDprodotto=Prodotti.CodiceProdotto  Se FROM Clienti, Prodotti Non ci sono relazioni, quindi non scrivo nulla COME CREARE UNA QUERY
  5. Crea
  6. Struttura QUERY
  7. Vi si aprirà una tabella , clicca chiudi
  8. Tasto destro- visualizza linguaggio sql
  9. Poi ricordati di salvare la query

LE QUERY

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

  1. serve a specificare i campi su cui effettuare i raggruppamenti.
  2. ci metto i campi non aggregati.
  3. Quando ci dice “”per ciasciun prodotto/ cliente/…..”. Nel SELECT deve esserci  O un campo specificato nella clausola GROUP BY  una funzione di aggregazione: “COUNT” per effettuare conteggi nel gruppo, “SUM”, “MAX” e “MIN”, “AVG” SELECT IDProdotto, SUM(Ordini.Quantità) AS Totale FROM Ordini GROUP BY IDProdotto; (fa la somma per ogni prodotto) GROUP BY HAVING Having lavora sui campi aggregati. Lo uso se il campo su cui voglio mettere le condizioni nelle somme/medie/MAX/Min/ecc…. nell’ esempio sotto viene usato per porre la condizione nel campo all’intero di SUM.

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