Anteprima
Vedrai una selezione di 10 pagine su 487
Appunti completi Base di dati Pag. 1 Appunti completi Base di dati Pag. 2
Anteprima di 10 pagg. su 487.
Scarica il documento per vederlo tutto.
Appunti completi Base di dati Pag. 6
Anteprima di 10 pagg. su 487.
Scarica il documento per vederlo tutto.
Appunti completi Base di dati Pag. 11
Anteprima di 10 pagg. su 487.
Scarica il documento per vederlo tutto.
Appunti completi Base di dati Pag. 16
Anteprima di 10 pagg. su 487.
Scarica il documento per vederlo tutto.
Appunti completi Base di dati Pag. 21
Anteprima di 10 pagg. su 487.
Scarica il documento per vederlo tutto.
Appunti completi Base di dati Pag. 26
Anteprima di 10 pagg. su 487.
Scarica il documento per vederlo tutto.
Appunti completi Base di dati Pag. 31
Anteprima di 10 pagg. su 487.
Scarica il documento per vederlo tutto.
Appunti completi Base di dati Pag. 36
Anteprima di 10 pagg. su 487.
Scarica il documento per vederlo tutto.
Appunti completi Base di dati Pag. 41
1 su 487
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

SQL: Interrogazioni

La clausola SELECT specifica quali attributi faranno parte della tabella risultato.

SELECT DISTINCT Impiegato

FROM Impiegati, Reparti

WHERE Impiegato = 'Neri'

Il risultato di un'interrogazione SQL è un multi-insieme. Se si desidera che la tabella calcolata non contenga duplicati, si deve includere la parola chiave DISTINCT.

Impiegato Codice

Rossi A

Bruni B

Neri B

Bianchi B

Confronto con Algebra

Relazionale: Proiezione e Select Il risultato di un'interrogazione in Algebra Relazionale è una relazione, quindi i duplicati saranno automaticamente scartati nel risultato. Viceversa, il risultato di un'interrogazione SQL è un multi-insieme. Affinché la tabella calcolata non contenga duplicati, si deve includere la parola chiave DISTINCT. Estrarre cognome e dipartimento di tutti gli impiegati. Scrivere l'interrogazione sia in Algebra Relazione che in SQL. Algebra Relazione: π Cognome, Dipart (Impiegato) SQL: SELECT Cognome, Dipart FROM Impiegati Risultato: Cognome | Dipart ------------------ Rossi | Amministrazione Bianchi | Produzione Rossi | Amministrazione Neri | DistribuzioneDistribuzione Neri Distribuzione10 4 - SQL : Interrogazioni*)Select con asterisco (ImpiegatoNome Cognome Dipart StipAnnMario Rossi Amministrazione 45 Come argomento della clausolaCarlo Bianchi Produzione 36 SELECT può anche comparire ilcarattere speciale * (asterisco),Giuseppe Verdi Amministrazione 40 che rappresenta la selezione diFranco Neri Distribuzione 45 tutti gli attributi delle tabelleelencate nella clausola FROM.Carlo Rossi Direzione 80Lorenzo Gialli Direzione 73Paola Rosati Amministrazione 40Marco Franco Produzione 46Estrarre tutte le informazioni degli impiegati di cognome “Rossi”ESERCIZIO : Nome Cognome Dipart StipAnnSELECT * Mario Rossi Amministrazione 45FROM Impiegato Carlo Rossi Direzione 80Cognome=‘Rossi’WHERE11 4 - SQL : InterrogazioniOgni attributo del risultato puòRidenominazione essere rinominato con un Alias.Impiegato DipartimentoNome Cognome Dipart StipAnn Nome CittàMario Rossi Amministrazione 45 Amministrazione Formattazione del testo

MilanoCarlo Bianchi Produzione 36 Produzione TorinoGiuseppe Verdi Amministrazione 40 Distribuzione RomaFranco Neri Distribuzione 45 Direzione MilanoCarlo Rossi Direzione 80 Ricerca MilanoLorenzo Gialli Direzione 73Paola Rosati Amministrazione 40Marco Franco Produzione 46 come “Salario”) degli impiegati diEstrarre lo Stipendio (e ri-nominarloESERCIZIO :cognome “Rossi” NOTA BENE: Se non viSalario fossero impiegati di cognomeSELECT StipAnn AS Salario “Rossi”, l’interrogazione45FROM Impiegato restituirebbe un insieme vuoto.80Cognome=‘Rossi’WHERE AS : operatore di ridenominazione. Consente di12 4 - SQL : Interrogazionirinominare gli attributi del risultato.RidenominazioneImpiegato DipartimentoNome Cognome Dipart StipAnn Nome CittàMario Rossi Amministrazione 45 Amministrazione MilanoCarlo Bianchi Produzione 36 Produzione TorinoGiuseppe Verdi Amministrazione 40 Distribuzione RomaFranco Neri Distribuzione 45 Direzione MilanoCarlo

Rossi Direzione 80 Ricerca Milano

Lorenzo Gialli Direzione 73 Nella clausola SELECT possono

Paola Rosati Amministrazione 40 comparire generiche espressioni

Marco Franco Produzione 46 sul valore degli attributi di

ciascuna riga selezionata.

Estrarre lo stipendio mensile dell'impiegato di cognome "Bianchi"

ESERCIZIO :

SELECT StipAnn/12 AS StipendioMensile StipendioMensile

FROM Impiegato 3

Cognome='Bianchi'

WHERE 13 4 - SQL : Interrogazioni

Convenzioni sui nomi

Per evitare ambiguità, ogni nome di attributo è composto da

NomeTabella.NomeAttributo

Quando l'ambiguità non sussiste, si può omettere la parte

NomeTabella

SELECT persone.nome, persone.reddito

FROM persone

WHERE persone.età<30

si può scrivere come:

SELECT nome, reddito

FROM persone

WHERE età<30

14 4 - SQL : Interrogazioni

Per evitare ambiguità tra attributi aventi

lo stesso nome in tabelle diverse, si

Variabili di range possono definire variabili di

Dipartimento as D WHERE I.Dipart = D.Nome;Dipartimento as D FROM Impiegato I, Dipartimento D WHERE Dipart=D.Nome WHERE Dipart=D.Nome equivale a possono essere anche utilizzate per disporre di un "duplicato" Le variabili di range di una tabella, utile ai fini di un'interrogazione. Estrarre il cognome degli Impiegati con lo stesso Nome che lavorano in ESERCIZIO: reparti differenti. I1 Nome Cognome Reparto Mario Rossi A Mario Bianchi B Cognome SELECT I1.Cognome, Gianni Verdi A FROM Impiegato I1, Impiegato I2 Rossi WHERE I1.Nome=I2.Nome AND Bianchi Nome Cognome Reparto I1.Reparto <> I2.Reparto Mario Rossi A Mario Bianchi B Gianni Verdi A 16 4 - SQL: Interrogazioni I2 La clausola WHERE consente di costruire un'espressione booleana combinando predicati semplici con gli NOT, AND, OR operatori AND, OR e NOT. Impiegato Dipartimento Nome Cognome Dipart StipAnn Nome Città Mario Rossi Amministrazione 45 Amministrazione Milano Carlo Bianchi Produzione 36 Produzione Torino Giuseppe Verdi Amministrazione 40 Distribuzione

RomaFranco Neri Distribuzione 45 Direzione MilanoCarlo Rossi Direzione 80 Ricerca MilanoLorenzo Gialli Direzione 73Paola Rosati Amministrazione 40Marco Franco Produzione 46Estrarre il nome ed il cognome degli Impiegati che lavorano nelESERCIZIO :dipartimento Amministrazione ed hanno stipendio maggiore di 70SELECT Nome,Cognome Nome CognomeFROM Impiegato 'Amministrazione'WHERE Dipart =AND StipAnn > 7017 4 - SQL : Interrogazioniin SQL l'AND l'ORATTENZIONE : ehanno la stessa priorità (mentre il NOTNOT, AND, OR ha priorità maggiore). Convieneesplicitare l'ordine di valutazione deglioperatori mediante parentesi .ImpiegatoNome Cognome Dipart StipAnnMario Rossi Amministrazione 45 DipartimentoCarlo Bianchi Produzione 36 Nome CittàGiuseppe Verdi Amministrazione 40 Amministrazione MilanoFranco Neri Distribuzione 45Carlo Rossi Direzione 80 Produzione TorinoLorenzo Gialli Direzione 73 Distribuzione RomaPaola Rosati Amministrazione 40 Direzione

Formattazione del testo

MilanoMarco Franco Produzione 46 Ricerca Milano

Estrarre i nomi degli Impiegati di cognome "Rossi" che lavorano nei dipartimenti Amministrazione o Produzione

SELECT Nome FROM Impiegato WHERE Cognome='Rossi' AND (Dipart='Amministrazione' OR Dipart='Produzione')

Calcolare la tabella ottenuta dalla tabella Personeselezionando solo quelle persone con reddito tra 20 e 30, e aggiungendo al risultato un attributo che ha, in ogni tupla, lo stesso valore dell'attributo Reddito. Mostrare il risultato dell'interrogazione.

Soluzione Esercizio

SELECT nome, età, reddito, reddito AS ancoraReddito FROM Persone WHERE Reddito >= 20 AND Reddito <= 30

SQL mette a disposizione un operatore LIKE per il confronto fra stringe.

Impiegato Dipartimento Nome

Cognome Dipart StipAnn Nome Città
Rossi Amministrazione 45 Mario Milano
Bianchi Produzione 36 Carlo Torino
Verdi Amministrazione 40 Distribuzione Roma
Neri Distribuzione 45 Franco
Rossi Direzione 80 Carlo Milano
Gialli Direzione 73 Lorenzo
Rosati Amministrazione 40 Paola
Franco Produzione 46 Marco

una "m" e che ha la

Estrarre gli Impiegati con un nome che comincia

ESERCIZIO :coppia di caratteri "rc" in penultima posizione

Il carattere _ rappresenta un confronto con un

SELECT * carattere arbitrario, mentre % rappresenta un

FROM Impiegato confronto con una stringa di lunghezza

'm%rc_'

WHERE Nome LIKE arbitraria (eventualmente nulla).

21 4 - SQL : Interrogazioni

Gestione dei valori nulli

Impiegato Per selezionare o meno i termini con i

Nome Cognome Dipart

Formattazione del testo

EtàStipAnn valori NULL, SQL fornisce il predicato Mario Rossi Amministrazione 45 IS [NOT] NULL.

Carlo Bianchi Pr

Dettagli
Publisher
A.A. 2022-2023
487 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher nagosc27 di informazioni apprese con la frequenza delle lezioni di Base di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma La Sapienza o del prof Catarci Tiziana.