• Non ci sono risultati.

Base di Dati della Banca: Schema

N/A
N/A
Protected

Academic year: 2021

Condividi "Base di Dati della Banca: Schema"

Copied!
50
0
0

Testo completo

(1)

Base di Dati della Banca: Schema

filiali nome_filiale

citta_filiale disponibilita depositi

nome_filiale numero_conto

nome_cliente saldo

prestiti nome_filiale numero_prestito

nome_cliente importo clienti

nome_cliente indirizzo citta_cliente

CREATE TABLE clienti (

nome_cliente VARCHAR(15), indirizzo VARCHAR(30), citta_cliente VARCHAR(15), PRIMARY KEY(nome_cliente) )

CREATE TABLE depositi (

nome_filiale VARCHAR(15), numero_conto INT,

nome_cliente VARCHAR(15),

CREATE TABLE prestiti (

nome_filiale VARCHAR(15), numero_prestito INT,

nome_cliente VARCHAR(15), CREATE TABLE filiali (

nome_filiale VARCHAR(15), citta_filiale VARCHAR(15), disponibilita INT,

PRIMARY KEY(nome_filiale)

)

(2)

Base di Dati della Banca: Istanza

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

clienti

nome_filiale citta_filiale disponibilita leopardo potenza 11000000 zebra brescia 12000000 koala firenze 20000000 panda venezia 15000000 coccodrillo roma 32000000 ippopotamo napoli 19000000 pantera napoli 14000000

filiali

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

depositi

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

prestiti

(3)

Interrogazione (1)

Chi sono i clienti ?

SELECT nome_cliente FROM clienti

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_cliente piero

luigi attilio nando ermanno sebastiano

antonio

ermes

(4)

Interrogazione (2)

Quali sono le filiali ?

SELECT nome_filiale FROM filiali

nome_filiale citta_filiale disponibilita leopardo potenza 11000000 zebra brescia 12000000 koala firenze 20000000 panda venezia 15000000 coccodrillo roma 32000000 ippopotamo napoli 19000000 pantera napoli 14000000

nome_filiale leopardo

zebra koala panda coccodrillo ippopotamo

pantera

(5)

Interrogazione (3)

Quali sono i prestiti (cliente e importo) ?

SELECT nome_cliente, importo FROM prestiti

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_cliente importo

luigi 3000

luigi 15000

nando 7000

sebastiano 8000

ermanno 30000

(6)

Interrogazione (4)

Quali sono i prestiti (cliente e importo) della filiale koala ?

SELECT nome_cliente, importo FROM prestiti

WHERE nome_filiale = 'koala'

nome_cliente importo

luigi 15000

nando 7000

ermanno 30000 nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(7)

Interrogazione (5)

Chi ha un prestito maggiore di 10000 ?

SELECT nome_cliente FROM prestiti

WHERE importo > 10000

nome_cliente luigi ermanno nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(8)

Interrogazione (6)

Chi, nella filiale koala, ha un prestito compreso fra 5000 e 10000 ?

SELECT nome_cliente FROM prestiti

WHERE nome_filiale = 'koala' AND

importo >= 5000 AND importo <= 10000

nome_cliente nando nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(9)

Interrogazione (7)

Quali sono le coppie (cliente, filiale) con la stessa città ?

SELECT nome_cliente, nome_filiale FROM clienti, filiali

WHERE citta_cliente = citta_filiale

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_filiale citta_filiale disponibilita leopardo potenza 11000000 zebra brescia 12000000 koala firenze 20000000 panda venezia 15000000 coccodrillo roma 32000000 ippopotamo napoli 19000000 pantera napoli 14000000

nome_cliente nome_filiale

ermanno zebra

(10)

Interrogazione (8)

Chi sono i clienti della filiale koala ?

(SELECT nome_cliente FROM depositi

WHERE nome_filiale = 'koala') UNION

(SELECT nome_cliente FROM prestiti

WHERE nome_filiale = 'koala')

nome_cliente attilio nando

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(11)

Interrogazione (9)

Quali sono i clienti (e relative città) che hanno un deposito bancario ?

SELECT DISTINCT clienti.nome_cliente, citta_cliente FROM clienti, depositi

WHERE clienti.nome_cliente = depositi.nome_cliente

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_cliente citta_cliente

piero benevento

attilio agrigento

nando bologna

sebastiano milano

(12)

Interrogazione (10)

Chi sono i clienti che hanno sia un deposito che un prestito in koala ?

SELECT DISTINCT depositi.nome_cliente FROM depositi, prestiti

WHERE depositi.nome_cliente = prestiti.nome_cliente AND depositi.nome_filiale = prestiti.nome_filiale AND depositi.nome_filiale = 'koala'

nome_cliente nando nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(13)

Interrogazione (11)

Chi sono i clienti che abitano in una piazza ?

SELECT nome_cliente FROM clienti

WHERE indirizzo LIKE 'piazza%'

nome_cliente nando nome_cliente indirizzo citta_cliente

piero via xx settembre benevento luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

(14)

Interrogazione (12)

Chi sono i clienti che hanno sia un deposito che un prestito in koala ?

SELECT DISTINCT nome_cliente FROM depositi

WHERE nome_filiale = 'koala' AND

nome_cliente IN (SELECT nome_cliente FROM prestiti

WHERE nome_filiale = 'koala')

nome_cliente nando nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(15)

Interrogazione (13)

Chi sono i clienti che hanno un deposito ma non un prestito in koala ?

SELECT DISTINCT nome_cliente FROM depositi

WHERE nome_filiale = 'koala' AND

nome_cliente NOT IN (SELECT nome_cliente FROM prestiti

WHERE nome_filiale = 'koala')

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_cliente

attilio

(16)

Interrogazione (14)

Quali sono i clienti (e relative città) che hanno un deposito in pantera ?

SELECT DISTINCT c.nome_cliente, citta_cliente FROM clienti c, depositi d

WHERE c.nome_cliente = d.nome_cliente AND nome_filiale = 'pantera'

nome_cliente citta_cliente piero benevento nome_cliente indirizzo citta_cliente

piero via xx settembre benevento luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

(17)

Interrogazione (15)

Chi sono i clienti che vivono allo stesso indirizzo (e città) di sebastiano ?

SELECT DISTINCT c2.nome_cliente FROM clienti c1, clienti c2

WHERE c1.nome_cliente = 'sebastiano' AND c2.nome_cliente != 'sebastiano' AND c1.indirizzo = c2.indirizzo AND

c1.citta_cliente = c2.citta_cliente

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

(18)

Interrogazione (16)

Chi sono i clienti che hanno un prestito in qualche filiale in cui luigi ha un prestito ?

SELECT DISTINCT nome_cliente FROM prestiti

WHERE nome_cliente != 'luigi' AND

nome_filiale IN (SELECT nome_filiale FROM prestiti

WHERE nome_cliente = 'luigi')

nome_cliente nando

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

(19)

Interrogazione (16): alternativa

Chi sono i clienti che hanno un prestito in qualche filiale in cui luigi ha un prestito ?

SELECT DISTINCT p2.nome_cliente FROM prestiti p1, prestiti p2

WHERE p1.nome_cliente = 'luigi' AND p2.nome_cliente != 'luigi' AND p1.nome_filiale = p2.nome_filiale

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_cliente

nando

ermanno

(20)

Interrogazione (17)

Quali sono le filiali che hanno disponibilità maggiore di qualche filiale di napoli ?

SELECT DISTINCT f1.nome_filiale FROM filiali f1, filiali f2

WHERE f1.disponibilita > f2.disponibilita AND f2.citta_filiale = 'napoli'

nome_filiale koala panda coccodrillo nome_filiale citta_filiale disponibilita

leopardo potenza 11000000 zebra brescia 12000000 koala firenze 20000000 panda venezia 15000000 coccodrillo roma 32000000 ippopotamo napoli 19000000 pantera napoli 14000000

nome_filiale citta_filiale disponibilita

leopardo potenza 11000000

zebra brescia 12000000

koala firenze 20000000

panda venezia 15000000

coccodrillo roma 32000000

ippopotamo napoli 19000000

pantera napoli 14000000

(21)

Interrogazione (17): alternativa

Quali sono le filiali che hanno disponibilità maggiore di qualche filiale di napoli ?

{ < , <=, >, >=, =, != } ANY =ANY IN

{ < , <=, >, >=, =, != } ALL !=ALL NOT IN

SELECT nome_filiale FROM filiali

WHERE disponibilita >ANY (SELECT disponibilita FROM filiali

WHERE citta_filiale = 'napoli')

nome_filiale citta_filiale disponibilita leopardo potenza 11000000 zebra brescia 12000000 koala firenze 20000000 panda venezia 15000000 coccodrillo roma 32000000 ippopotamo napoli 19000000 pantera napoli 14000000

nome_filiale citta_filiale disponibilita

leopardo potenza 11000000

zebra brescia 12000000

koala firenze 20000000

panda venezia 15000000

coccodrillo roma 32000000

ippopotamo napoli 19000000

pantera napoli 14000000

(22)

Interrogazione (18)

Qual’è il prestito con l’importo più piccolo ?

SELECT DISTINCT importo FROM prestiti

WHERE importo <=ALL (SELECT importo FROM prestiti)

importo 3000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(23)

Interrogazione (19)

Chi sono i clienti che hanno sia un deposito che un prestito in koala ?

SELECT nome_cliente FROM clienti

WHERE EXISTS (SELECT *

FROM depositi

WHERE depositi.nome_cliente = clienti.nome_cliente AND nome_filiale = 'koala') AND

EXISTS (SELECT *

FROM prestiti

WHERE prestiti.nome_cliente = clienti.nome_cliente AND nome_filiale = 'koala')

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

(24)

Interrogazione (20)

Lista in ordine alfabetico le città dei clienti aventi un deposito in pantera

SELECT DISTINCT citta_cliente FROM clienti, depositi

WHERE clienti.nome_cliente = depositi.nome_cliente AND nome_filiale = 'pantera'

ORDER BY citta_cliente

citta_cliente nome_cliente indirizzo citta_cliente

piero via xx settembre benevento luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

(25)

Interrogazione (21)

Lista, per ogni città (in ordine ascendente) dei clienti, l’importo dei prestiti (in ordine discendente)

SELECT citta_cliente, importo FROM clienti, prestiti

WHERE clienti.nome_cliente = prestiti.nome_cliente ORDER BY citta_cliente ASC,

importo DESC

citta_cliente importo bologna 7000 brescia 30000 nome_cliente indirizzo citta_cliente

piero via xx settembre benevento luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(26)

Interrogazione (22)

Funzioni aggregate : { COUNT, SUM, MAX, MIN, AVG }

• Insieme → Numero

• Applicabili ad una tabella (assolute) o a un sottoinsieme di righe (relative)

Qual’è il prestito con l’importo più piccolo ?

SELECT MIN(importo) FROM prestiti

MIN(importo) 3000 nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(27)

Interrogazione (23)

Qual’è la media dei depositi di koala ?

SELECT AVG(saldo) FROM depositi

WHERE nome_filiale = 'koala'

AVG(saldo) 56500.0000 nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

(28)

Interrogazione (24)

Quale è l’importo totale dei prestiti a luigi ?

SELECT SUM(importo) FROM prestiti

WHERE nome_cliente = 'luigi'

SUM(importo) 18000 nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(29)

Interrogazione (25)

Quanti sono i clienti che hanno un prestito in koala ?

SELECT COUNT(DISTINCT nome_cliente) FROM prestiti

WHERE nome_filiale = 'koala'

COUNT(DISTINCT nome_cliente) 3

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(30)

Interrogazione (26)

Quanti sono i depositi in pantera ?

SELECT COUNT(*) FROM depositi

WHERE nome_filiale = 'pantera'

COUNT(*) 2 nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

(31)

Interrogazione (27)

Quale è il deposito massimo, minimo e medio di pantera ?

SELECT MIN(saldo) AS minimo, MAX(saldo) AS massimo, AVG(saldo) AS medio FROM depositi

WHERE nome_filiale = 'pantera'

minimo massimo medio 6000 13000 9500.0000 nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

(32)

Interrogazione (28)

Funzioni aggregate relative : GROUP BY

Quale è il deposito medio di ogni filiale ?

SELECT nome_filiale, AVG(saldo) AS medio FROM depositi

GROUP BY nome_filiale

nome_filiale medio coccodrillo 12000.0000 ippopotamo 8000.00.00 nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_conto nome_cliente saldo

coccodrillo 537 antonio 12000

ippopotamo 212 piero 8000

koala 518 attilio 85000

koala 703 nando 28000

panda 921 sebastiano 19000

pantera 133 piero 13000

pantera 371 ermes 6000

(33)

Interrogazione (29)

Quale è, per ciascuna filiale, il numero di clienti che hanno un prestito ?

SELECT nome_filiale, COUNT(DISTINCT nome_cliente) AS tot FROM prestiti

GROUP BY nome_filiale

nome_filiale tot

koala 3

leopardo 1

zebra 1

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_filiale numero_prestito nome_cliente importo

koala 23 luigi 15000

koala 37 nando 7000

koala 71 ermanno 30000

leopardo 12 luigi 3000

zebra 43 sebastiano 8000

(34)

Interrogazione (30)

Determina, per ciascuna città di filiale, il numero (distinto) di depositari e la media dei saldi

SELECT citta_filiale, COUNT(DISTINCT nome_cliente) AS tot, AVG(saldo) AS media FROM filiali, depositi

WHERE filiali.nome_filiale = depositi.nome_filiale GROUP BY citta_filiale

citta_filiale tot media firenze 2 56500.0000

napoli 2 9000.0000 roma 1 12000.0000

nome_filiale citta_filiale disponibilita leopardo potenza 11000000

zebra brescia 12000000

koala firenze 20000000

panda venezia 15000000

coccodrillo roma 32000000 ippopotamo napoli 19000000 pantera napoli 14000000

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filial e

citta_filiale disponibilita nome_filiale numero_conto nome_cliente saldo

koala firenze 20000000 koala 518 attilio 85000

koala firenze 20000000 koala 703 nando 28000

panda venezia 15000000 panda 921 sebastiano 19000

coccodrillo roma 32000000 coccodrillo 537 antonio 12000

(35)

Interrogazione (31)

Condizioni sui gruppi di tuple : HAVING

Determina minimo e massimo prestito delle filiali aventi prestito medio maggiore di 15000

SELECT nome_filiale, MIN(importo) AS minimo, MAX(importo) AS massimo FROM prestiti

GROUP BY nome_filiale

HAVING AVG(importo) > 15000

nome_filiale minimo massimo

nome_filiale numero_prestito nome_cliente importo

koala 23 luigi 15000

koala 37 nando 7000

koala 71 ermanno 30000

leopardo 12 luigi 3000

zebra 43 sebastiano 8000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(36)

Interrogazione (32)

Quale è la filiale con maggior deposito medio ?

SELECT nome_filiale FROM depositi

GROUP BY nome_filiale

HAVING AVG(saldo) >=ALL (SELECT AVG(saldo) FROM depositi

GROUP BY nome_filiale)

nome_filiale koala

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_conto nome_cliente saldo

coccodrillo 537 antonio 12000

ippopotamo 212 piero 8000

koala 518 attilio 85000

koala 703 nando 28000

panda 921 sebastiano 19000

pantera 133 piero 13000

pantera 371 ermes 6000

(37)

Interrogazione (33)

Quale è la disponibilità monetaria di ogni città avente più di una filiale ?

SELECT citta_filiale, SUM(disponibilita) AS totdisp FROM filiali

GROUP BY citta_filiale HAVING COUNT(*) > 1

citta_filiale totdisp napoli 33000000 nome_filiale citta_filiale disponibilita

leopardo potenza 11000000 zebra brescia 12000000 koala firenze 20000000 panda venezia 15000000 coccodrillo roma 32000000 ippopotamo napoli 19000000 pantera napoli 14000000

nome_filiale citta_filiale disponibilita

leopardo potenza 11000000

zebra brescia 12000000

koala firenze 20000000

panda venezia 15000000

coccodrillo roma 32000000

ippopotamo napoli 19000000

pantera napoli 14000000

(38)

Interrogazione (34)

Quale è l’importo medio dei prestiti dei clienti che vivono a milano ed hanno almeno 2 prestiti ?

SELECT prestiti.nome_cliente, AVG(importo) AS pmedio FROM clienti, prestiti

WHERE prestiti.nome_cliente = clienti.nome_cliente AND citta_cliente = 'milano'

GROUP BY prestiti.nome_cliente HAVING COUNT(*) >= 2

nome_cliente pmedio luigi 9000

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano

attilio corso europa agrigento nando piazza garibaldi bologna

ermanno via cavour brescia

sebastiano viale italia milano antonio via michelangelo milano

ermes via piave caserta

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_cliente indirizzo citta_cliente nome_filiale numero_prestito nome_cliente importo

luigi viale italia milano leopardo 12 luigi 3000

luigi viale italia milano koala 23 luigi 15000

(39)

Interrogazione (35)

Determina, per ogni cliente di milano (visualizzato in ordine alfabetico) con tutti i saldi positivi, il bilancio totale dei depositi

SELECT depositi.nome_cliente, SUM(saldo) AS totsaldo FROM clienti, depositi

WHERE depositi.nome_cliente = clienti.nome_cliente AND citta_cliente = 'milano'

GROUP BY depositi.nome_cliente HAVING MIN(saldo) > 0

ORDER BY depositi.nome_cliente

Forma generale di una interrogazione SQL

nome_cliente totsaldo

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

nome_cliente indirizzo citta_cliente nome_filiale numero_conto nome_cliente saldo

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

(40)

Aggiornamento

• Cancellazione: DELETE

• Inserimento: INSERT

• Modifica: UPDATE

DELETE FROM tabella WHERE predicato

INSERT INTO tabella VALUES tupla

INSERT INTO tabella query SQL

UPDATE tabella

SET attributo = espressione

WHERE predicato

(41)

Cancellazione (1)

Cancella tutti i prestiti di luigi !

DELETE FROM prestiti

WHERE nome_cliente = 'luigi'

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_filiale numero_prestito nome_cliente importo

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(42)

Cancellazione (2)

Cancella tutti i depositi di koala !

DELETE FROM depositi

WHERE nome_filiale = 'koala'

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_conto nome_cliente saldo

coccodrillo 537 antonio 12000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

(43)

Cancellazione (3)

Cancella i prestiti tra 5000 e 10000 !

DELETE FROM prestiti

WHERE importo BETWEEN 5000 AND 10000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 71 ermanno 30000

(44)

Cancellazione (4)

Cancella i depositi di pantera inferiori a 9000 !

DELETE FROM depositi

WHERE nome_filiale = 'pantera' AND saldo < 9000

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

(45)

Cancellazione (5)

Cancella tutti depositi delle filiali di napoli !

DELETE FROM depositi WHERE nome_filiale IN (SELECT nome_filiale FROM filiali

WHERE citta_filiale = 'napoli')

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

nome_filiale citta_filiale disponibilita leopardo potenza 11000000 zebra brescia 12000000 koala firenze 20000000 panda venezia 15000000 coccodrillo roma 32000000 ippopotamo napoli 19000000 pantera napoli 14000000

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

(46)

Inserimento (1)

Inserisci il nuovo cliente carlo e il suo deposito di 10000 in coccodrillo!

INSERT INTO clienti

VALUES ('carlo', 'via carducci', 'milano') INSERT INTO depositi

VALUES ('coccodrillo', 926, 'carlo', 10000)

nome_cliente indirizzo citta_cliente piero via xx settembre benevento

luigi viale italia milano attilio corso europa agrigento nando piazza garibaldi bologna ermanno via cavour brescia sebastiano viale italia milano

antonio via michelangelo milano

ermes via piave caserta

carlo via carducci milano

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

coccodrillo 926 carlo 10000

(47)

Inserimento (2)

Inserisci la nuova filiale pinguino a torino!

INSERT INTO filiali

VALUES ('pinguino', 'torino', 8000000)

nome_filiale citta_filiale disponibilita

leopardo potenza 11000000

zebra brescia 12000000

koala firenze 20000000

panda venezia 15000000

coccodrillo roma 32000000

ippopotamo napoli 19000000

pantera napoli 14000000

pinguino torino 8000000

(48)

Inserimento (3)

Inserisci nuovi depositi con saldo 1500 per tutti i clienti che hanno un prestito in koala !

INSERT INTO depositi

SELECT nome_filiale, numero_prestito, nome_cliente, 1500 FROM prestiti

WHERE nome_filiale = 'koala'

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

koala 23 luigi 1500

koala 37 nando 1500

koala 71 ermanno 1500

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

(49)

Modifica (1)

Incrementa tutti i depositi del 10% !

UPDATE depositi

SET saldo = saldo * 1.10

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 93500

coccodrillo 537 antonio 13200

koala 703 nando 30800

pantera 133 piero 14300

nome_filiale numero_conto nome_cliente saldo

koala 518 attilio 85000

coccodrillo 537 antonio 12000

koala 703 nando 28000

pantera 133 piero 13000

panda 921 sebastiano 19000

ippopotamo 212 piero 8000

pantera 371 ermes 6000

(50)

Modifica (2)

Dimezza tutti i prestiti di koala !

UPDATE prestiti

SET importo = importo / 2 WHERE nome_filiale = 'koala'

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 7500

koala 37 nando 3500

zebra 43 sebastiano 8000

koala 71 ermanno 15000

nome_filiale numero_prestito nome_cliente importo

leopardo 12 luigi 3000

koala 23 luigi 15000

koala 37 nando 7000

zebra 43 sebastiano 8000

koala 71 ermanno 30000

Riferimenti

Documenti correlati

Il conferimento dei dati necessari al perseguimento delle suddette finalità ha natura “obbligatoria” e un suo eventuale rifiuto potrebbe comportare l’impossibilità per la

▪ Assistenza archeologica ai lavori di scavo nell’ambito del cantiere per la realizzazione di un parcheggio multipiano interrato in Piazza Cavallotti – Castel Gandolfo

Il valore indica la potenzialità del microbiota di favorire l'instaurarsi o consolidarsi di malattie infiammatorie intestinali come colite ulcerosa, morbo di Crohn, diverticolite ed

Se il manifatturiero italiano registra nei primi dieci mesi del 2020 una contrazione di poco superiore ai 12 punti percentuali, le esportazioni di cosmetici (-16,5% la previsione

865/1971, eseguito con mezzo meccanico, anche in presenza d'acqua con tirante non superiore a 20 cm, inclusi la rimozione di sovrastrutture stradali e di muri a secco, il taglio e

0027973 -06/03/2020- AIFA-AIFA_PQ_P, con la quale è stata richiesta all’Ufficio PQ-PhCC l’autorizzazione all’importazione del medicinale “LOPINAVIR/RITONAVIR Accord®

(ii) al doppio della spesa salariale annua del beneficiario (compresi gli oneri sociali e il costo del personale che lavora nel sito dell’impresa ma che figura formalmente nel

• ADEMPIMENTI E VERSAMENTI INPS SOSPESI - Effettuazione degli adempimenti e dei versamenti dei contributi previdenziali e assistenziali sospesi (in unica soluzione