[:it]
Auguro un sereno Natale e un un Buon Anno
[:]
[:it]
Oltre che l’estrazione di dati dal database (interrogazione), la cancellazione di opportuni record, si ha la necessità di modificare un insieme di record ad esempio questa esigenza può nascere dal fatto il nome di una via è stato cambiato e tutti gli abitanti di questa via devono cambiare il loro indirizzo all’anagrafe del comune.
Per fare questo non si può di certo andare su ogni record e modificare a mano il database.
Per eseguire tale cosa si esegue il seguente comando
UPDATE Anagrafica SET NomeVia =’Via Nuova’
WHERE NomeVia = ‘Via Vecchia’
Dove Anagrafica è il nome della tabella e NomeVia è il nome della colonna di cui si vuole aggiornare il valore.[:]
[:it]
E’ dato lo schema relazionale costituito dalle seguenti tabelle:
(le chiavi primarie sono sottolineate)
SALA RIUNIONE(CodiceSala, CodiceSede, NomeSala)
SEDE(CodiceSede, Nome, Indirizzo, Citta, Stato)
Si sarà creata la seguente relazione:
Adesso popolare il database con i seguenti dati:
| codicesede | Nome | indirizzo | Citta | Stato |
|---|---|---|---|---|
| 1 | Centro Congressi | Via dell’industria 15 | Bolzano | Italia |
| 2 | Centro Belle Speranze | Via della Fede 23 | Vienna | Austria |
| 3 | Centro Pecchi | Via XXVI Ottore | New York | Stati Uniti |
| Codicesala | Codicesede | NomeSala |
|---|---|---|
| 1 | 1 | Sala Verde |
| 2 | 1 | Sala Rossa |
| 3 | 1 | Sala Gialla |
| 4 | 1 | Sala Grande |
| 5 | 2 | Sala Kaiser |
| 6 | 2 | Sala Sissi |
| 7 | 2 | Sala Franz |
| 8 | 2 | Sala Imperatore |
| 9 | 3 | Sala Washington |
| 10 | 3 | Sala Kennedy |
eseguire adesso le seguenti query e dare il seguente nome query# con # il relativo punto
[:]
[:it]
Oltre che estrarre dei valori, spesso si vuole anche cancellarli.
Per poter fare questa operazione valgono tutte le regole della clausola WHERE
Ad esempio il seguente comando cancella tutti i record talla tabella Gioco.
delete from Gioco
Se la tabella gioco contiene i seguenti record:
| IDgioco | Nomegioco |
|---|---|
| 5 | monopoli |
| 6 | scacchi |
| 7 | dama |
si vuole cancellare solo il record che contiene il gioco della dama si deve eseguire la seguente query.
DELETE FROM GIOCO WHERE nomegioco = ‘dama’[:]
[:it]
Spesso, da una tabella si richiedono dei raggruppamenti, sapere la somma di colonne numeriche, sapere quante colonne fanno parte di una tabella.
Ad esempio riprendendo l’esempio degli alunni di una classe del post Join, si vuole sapere quanti sono gli alunni di una classe.
COMANDO GROUP BY e COUNT(*)
Bisogna raggrupparli per classe e contare quanti sono.
In una scuola vi sono molti alunni e molte classi per cui il conto manuale sarebbe improponibile e fonte di numerosi errori.
Il comando per sapere quanti sono gli alunni di una classe risulta il seguente:
SELECT
count(*)
FROM
anagrafica
GROUP By id_classe
L’esito della query precedente fornisce il seguente risultato:
| Expr1000 |
|---|
| 4 |
| 3 |
Come si nota una query del genere ha poco significato ed è di difficile lettura allora voglio anche il nome della classe di cui si vuole conoscere il numero degli studenti.
La query, indubbiamente complessa è la seguente:
SELECT
classe.nome,
count(*)
FROM
anagrafica,
classe
WHERE
anagrafica.id_classe=classe.id_classe
GROUP BY anagrafica.id_classe, classe.nome;
Riflessioni su questa query:
all’interno del comando Group by si deve mettere sia l’id_classe che il nome della classe ossia le stesse colonne che compaiono nella SELECT.
L’esito è il seguente:
| nome | Expr1001 |
|---|---|
| Prima | 4 |
| Seconda | 3 |
Adesso l’esito è indubbiamente migliore ma non ancora il massimo!
Il nome delle colonne non è chiarissimo ma voglio dare un nome più coerente con il suo contenuto.
AS
Il comando AS permette di rinominare una colonna.
Nel caso della query precedente si ha:
SELECT
classe.nome AS classe,
Count(*) AS studenti
FROM
anagrafica,
classe
WHERE
anagrafica.id_classe=classe.id_classe
GROUP BY classe.nome, anagrafica.id_classe;
SUM
Supponiamo adesso che ogni studente abbia versato una quota per la partecipazione della gita e voglio sapere il totale della cifra a disposizione.
Naturalmente la tabella Anagrafica deve contemplare adesso la colonna quota all’interno della quale si è inserita la cifra versata dal relativo studente.
La tabella anagrafica contiene i seguenti dati:
| ID_anagrafica | nome | id_classe | quota |
|---|---|---|---|
| 1 | Paolo | 1 | € 41,00 |
| 2 | Filippo | 1 | € 32,00 |
| 3 | Maria | 1 | € 25,00 |
| 4 | Giovanna | 1 | € 32,00 |
| 5 | Tommaso | 2 | € 52,00 |
| 6 | Marta | 2 | € 12,00 |
| 7 | Giovanna | 2 | € 12,00 |
La query sarà la seguente:
SELECT
SUM(quota) AS TOTALE
from anagrafica
WHERE
id_classe=1;
che fornisce come risultato:
| TOTALE |
|---|
| € 130,00 |
AVG
Se voglio conoscere il valore medio della quota versata dai singoli ragazzi si deve eseguire la seguente query.
SELECT
AVG(quota) AS media
from anagrafica
WHERE
id_classe=1;
che fornisce come risultato:
| MEDIA |
|---|
| € 32,50 |
[:]
[:it]
Nel caso in cui si volessero estrarre dei dati che sono distribuiti su due tabelle messe in relazione tra loro, è necessario usare una JOIN.
Il comando è il seguente:
SELECT tabella1.colonna3, tabella2.colonna4
FROM tabella1, tabella2
WHERE
tabella1.colonna2=tabella2.colonna1
Ad esempio si abbia il seguente database così relazionato:
Si vogliono estrarre i nominativi dei ragazzi appartenenti alla stessa classe con il nome della relativa classe.
Si eseguirà la seguente QUERY
E’ consuetudine e buona norma che il nome delle colonne siano messe in colonna come pure l’elenco delle tabelle e le condizioni di WHERE questo perchè nel caso in cui si volesse aggiungere o togliere una colonna o una tabella o una condizione si cancella o si aggiunge velocemente e la lettura è molto agevole.
La tabella anagrafica contiene i seguenti dati:
| ID_anagrafica | nome | id_classe |
|---|---|---|
| 1 | Paolo | 1 |
| 2 | Filippo | 1 |
| 3 | Maria | 1 |
| 4 | Giovanna | 1 |
| 5 | Tommaso | 2 |
| 6 | Marta | 2 |
| 7 | Giovanna | 2 |
La tabella Classe i seguenti dati:
| ID_classe | nome | Sezione |
|---|---|---|
| 1 | Prima | OSI |
| 2 | Seconda | OSI |
| 3 | Terza | OSI |
Il comando di JOIN fornisce il seguente esito:
| anagrafica.nome | classe.nome |
|---|---|
| Paolo | Prima |
| Filippo | Prima |
| Maria | Prima |
| Giovanna | Prima |
| Tommaso | Seconda |
| Marta | Seconda |
| Giovanna | Seconda |
[:]
[:it]
Pensare sempre le percentuali come frazioni.
Tale trucco permette sempre di risolvere tutti i relativi problemi.
Tipo A
Trasformare i dati che seguono in percentuale:
| A.1. 12 ragazzi su 60 suonano uno strumento | |
| A.2. 6 ragazzi su 18 giocano a tennis | |
| A.3. 21 ragazzi su 28 possiedono uno scuter | |
| A.4. 3 ragazzi su 30 trascorrono le vacanze all’estero | |
| A.5. 6 ragazzi su 80 sono titolari di un conto corrente | |
| A.6. 9 ragazzi su 36 portano gli occhiali | |
| A.7. 55€ rispetto 200€ | |
| A.8 45€ rispetto 300€ | |
| A.9 13,49€ rispetto 19€ | |
| A.10. 1,56€ rispetto 7,80€ | |
| A.11. 0,1625€ rispetto a 3,25€ | |
| A.12. 1027,5 rispetto a 685€ |
Tipo B
Calcolare il
| B.1 10% di 3.200 | |
| B.2 12% di 50 | |
| B.3 20% di 42 | |
| B.4 13% di 23 | |
| B.5 50% di 1000 | |
| B.6 20% di 3,99 | |
| B.7. 22% di 1200 | |
| B.8. 15% di 13 |
Tipo BC
Aumentare il costo di:
| BC.1. 440€ del 12% | |
| BC.2. 2,8€ del 1% | |
| BC.3. 10,80 del 30% | |
| BC.4. 1,24 del 3% | |
| BC.5. 27,30 del 2,5% | |
| BC.6 400€ del 1,275% |
Tipo BD
Diminuire il costo di:
| BD.1. 3500€ del 12% | |
| BD.2. 234€ del 23% | |
| BD.3. 45€ del 67% | |
| BD.4. 1500€ el 12% | |
| BD.5. 700€ del 54% | |
| BD.6. 960 del 12% |
[:]
[:it]
Questo test richiede un minimo di concentrazione e manualità con il passaggio da decimale a frazione.
Non presenta grandi difficoltà ma solo attenzione ed automatismo nel meccanismo.
[WpProQuiz 35][:]
[:it]
Sviluppare il seguente esercizio sia su word che su open office
Creare il seguente documento:
Instestazione:
Istituto Comprensivo “x y”
Via A. Vespucci n.4 – Milano
Tel. 02.3456789 – Fax 02.9876543
Corpo del documento
Prot.
Milano, ……………..
Rappresentanti di classe
Sig/Sig.ra
“nome” “cognome”
“indirizzo”
“cap” “città”
Oggetto : convocazione Interclasse
Si comunica che in data 25/04/03 si effettuerà la riunione di Interclasse programmata, come da calendario trasmesso nel mese di settembre, presso la scuola elementare “G. Pascoli” dalle ore 17.00 alle ore 18.00 per l’esplicitazione dei seguenti punti all’o.d.g.:
IL DIRIGENTE SCOLASTICO
NOME INDIRIZZO CITTA’
Verdi Giammario Via Larga n. 100 20100 MILANO
Bianchi Rosa Via Cadorna n. 27 20100 MILANO
Fabbri Donato Via Carducci n. 44 20100 MILANO
Sordella Giuseppe Corso Italia n. 153 20100 MILANO
Codoni Giorgio Via Montenapoleone n. 12 20100 MILANO
Salva il documento[:]
[:it]
Una verifica che richiede solo attenzione ed aver automatizzato il procedimento risolutivo in seguito ai numerosi esercizi sviluppati precedentemente nel relativo capitolo del blog.
[WpProQuiz 36][:]