Anteprima
Vedrai una selezione di 3 pagine su 8
Linguaggio SQL Pag. 1 Linguaggio SQL Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
Linguaggio SQL Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

EXCEPT

SELECT Fornitore

FROM Fornitura;

Perciò il costrutto EXCEPT necessita di 2 SELECT, come d'altrocanto anche UNION e

INTERSECT anche se quest'ultimo non è implementato commercialmente.

Le viste sono molto utili per realizzare risultati intermedi. Se ad esempio voglio i fornitori che

forniscono esattemente una merce, le viste sono molto comode che realizzare i risultati intermedi

di almeno 1 merce fornita ed almeno 2. Per creare una vista si utilizza CREATE VIEW. Esempio

di fornitore che fornisce esattamente una merce:

CREATE VIEW Almeno1(Fornitore) AS

(SELECT Fornitore

FROM Fornitura);

CREATE VIEW Almeno2(Fornitore) AS

(SELECT X1.Fornitore

FROM Fornitura X1, Fornitura X2

WHERE X1.Fornitore=X2.Fornitore AND X1.Merce!=X2.Merce);

SELECT *

FROM Almeno1;

EXCEPT

SELECT *

FROM Almeno2;

quindi CREATE VIEW NomeVista (Attributi che compongono la vista).

Exists, not exists, in, not in

EXISTS prende come argomento una query e restituisce true quando la query restituisce almeno

una riga. La query all'interno della WHERE viene valutata ogni volta per ogni riga.

Esempio nomi fornitore che forniscono almeno una merce e nomi fornitori che non forniscono

alcuna merce: 5 / 8

Linguaggio SQL

SELECT F.Nome

FROM Fornitore F

WHERE EXISTS(SELECT *

FROM Fornitura X

WHERE X.Fornitore=F.PIVA);

SELECT F.Nome

FROM Fornitore F

WHERE NOT EXISTS(SELECT *

FROM Fornitura X

WHERE X.Fornitore=F.PIVA);

EXISTS ha solo 1 argomento che è sempre SELECT.

IN serve a stabilire se un valore di un attributo o una combinazione di valore di più attributi, fa

parte della tabella riportata a destra. Esempio:

SELECT F.Nome

FROM Fornitore F

WHERE F.PIVA IN (SELECT Fornitore

FROM Fornitura);

NOT IN serve a stabilire se un valore di un attributo o una combinazione di valore di più

attributi, non fa parte della tabella riportata a destra.

Esempio fornitori che non forniscono merci:

SELECT F.Nome

FROM Fornitore F

WHERE F.PIVA NOT IN (SELECT Fornitore

FROM Fornitura);

Coppie nome fornitore, nome merce tale che le corrispondenti coppie (P.IVA,Codice)

appartengono a fornitura:

SELECT F.Nome, M.Nome

FROM Fornitore F, Merce M 6 / 8

Linguaggio SQL

WHERE (F.PIVA, M.Codice) IN (SELECT Fornitore, Merce

FROM Fornitura);

Gli attributi della SELECT su fornitura potrebbero essere sbagliati e necessitare di

ridenominazione a seconda del DBMS che si utilizza. La query sopra calcola il prodotto

cartesiano Fornitore Merce e ogni riga prosegue se la coppia P.IVA, Codice è presente nella

×

SELECT.

SQL è un linguaggio che consente di esprimere le query in forma dichiarativa, per dichiarativo si

intende un liguaggio che consente di esprimere un risultato dichiarandone la proprietà, questo fa

si che la query in SQL è facilmente comprensibile. L'algebra relazionale è invece intrinsecamente

procedurale.

Costrutti di aggregazione

I costrutti di aggregazione sono dei possibili calcoli che ad esempio calcolano il valore massimo

da un insieme di tuple. Le aggregazioni si riferiscono a fare operazioni di valori che stanno su più

righe della tabella attraverso operatori quali SUM, COUNT, MIN, MAX, AVG ecc. Utilizziamo

come riferimento il seguente schema relazionale:

Cliente(CF, Nome, Città, Eta)

Codice Nome Città Età

C1 N1 CS 10

C2 N2 RC 30

C3 N3 RM 26

Fare

SELECT Max(Eta) AS EtaMax

FROM Cliente;

Ritorna una tabella con numero di righe diverso da quello di cliente. Ogni qualvolta si usa un

operatore di aggregazione la SELECT si rimanda, si esegue la FROM e quindi vengono

importate le righe di cliente e vengono filtrate dalla WHERE e prese tutte le righe si valuta

l'aggregato e poi si valuta la SELECT. Vale l'ordine di priorità come detto.

7 / 8

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

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Jack04M di informazioni apprese con la frequenza delle lezioni di Basi 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à della Calabria o del prof Furfaro Filippo.