Sei sulla pagina 1di 7

Algebra relazionale: proiezioni e selezioni

La manipolazione dei dati nel modello relazionale avviene mediante gli operatori dellalgebra relazionale. Gli operandi sono relazioni (tabelle) e il risultato ancora una relazione (tabella). La tabella ottenuta dallesecuzione di unoperazione detta resultset o recordset risultante ed temporanea, cio non viene memorizzata nel database, a meno che non venga specificato diversamente. Gli operatori dellalgebra relazionale sono otto. In questa dispensa ne vedremo tre: - loperatore di proiezione (project); - loperatore di selezione (select); - loperatore di ridenominazione (rename). Tutte le funzionalit degli operatori relazionali sono realizzate mediante un unico costrutto sintattico chiamato query (interrogazione). In SQL tale costrutto rappresentato con il comando SELECT, il quale presenta diverse forme a seconda della funzionalit che si desidera ottenere. Al fine di rendere pi chiara la spiegazione e fornire degli esempi, si far uso della seguente tabella di esempio.
IMPIEGATO

matr t1
1

cogn Sili Rossi Neri Neri Verdi Bisi

stipendio 60 40 40 40 50 70

dipartimento No No No Su Su Is

101 102 103 201 202 301

t2 t3 t4 t5 t6

Proiezione

La proiezione consente di scegliere quali colonne dovranno comparire nel resultset. La sintassi da utilizzare la seguente: SELECT colonna1, ..., colonnaN FROM tabella Esempio 1: Visualizzare matricola e cognome di ogni impiegato SELECT FROM matr, cogn impiegato

t1 indica la tupla 1

Bocchi Cinzia Ultimo aggiornamento: 15/09/2012

Resultset:
matr t1 t2 t3 t4 t5 t6 101 102 103 201 202 301 cogn Sili Rossi Neri Neri Verdi Bisi

Esempio 2: Visualizzare tutti i dati di ciascun impiegato Esiste una sintassi per indicare tutte le colonne di una tabella, senza doverle scrivere. SELECT FROM * impiegato;

La precedente query equivalente a SELECT FROM matr, cogn, stipendio, dipartimento impiegato;

Resultset: tabella IMPIEGATO Esempio 3: Visualizzare tutti i cognomi degli impiegati SELECT FROM Resultset:
cogn t1 t2 t3 t4 t5 t6 Sili Rossi Neri Neri Verdi Bisi

cogn impiegato

Bocchi Cinzia Ultimo aggiornamento: 15/09/2012

Esempio 4: Visualizzare tutti i cognomi degli impiegati, senza ripetizioni Come si pu notare, la query dellesempio 3 non elimina i cognomi ripetuti. Se si desidera eliminare le ripetizioni si deve utilizzare la clausola DISTINCT. SELECT FROM Resultset:
cogn t1 t2 t3 t4 t5 Sili Rossi Neri Verdi Bisi

DISTINCT cogn impiegato

Esempio 5: Visualizzare gli stipendi degli impiegati aumentati del 2%, insieme alla matricola Gli argomenti della SELECT possono essere costituiti anche da espressioni aritmetiche. SELECT FROM Resultset:
matr t1 t2 t3 t4 t5 t6 101 102 103 201 202 301 stipendio 61.2 40.8 40.8 40.8 51 71.4

matr, (stipendio + stipendio * 2 / 100) impiegato

Ridenominazione

La ridenominazione consente di atribuire un nome diverso alle colonne della clausola SELECT e alle tabelle della clausola FROM, utilizzando loperatore AS. La ridenominazione avviene specificando AS, seguito dal nuovo nome (alias), subito dopo la colonna/tabella.

Bocchi Cinzia Ultimo aggiornamento: 15/09/2012

Loperatore di ridenominazione non modifica il nome delle colonne nella tabella originale ma solo nella tabella risultante; si tratta quindi di una modifica temporanea che ha come scopo il rendere maggiormente comprensibili i risultati. Per quanto riguarda la modifica del nome di una tabella, lutilit risiede nella possibilit di riferirsi alla stessa con un nome semplificato o abbreviato. Esempio 6: Visualizzare matricola e cognome di ogni impiegato cambiando i nomi degli attributi rispettivamente in matricola e cognome SELECT FROM Resultset:
matricola t1 t2 t3 t4 t5 t6 101 102 103 201 202 301 cognome Sili Rossi Neri Neri Verdi Bisi

matr AS matricola, cogn AS cognome impiegato

Selezione

La selezione consente di scegliere quali righe della tabella dovranno comparire nel resultset. La sintassi da utilizzare la seguente: SELECT colonna1, ..., colonnaN FROM tabella WHERE condizione La condizione di ricerca unespressione composta con operatori aritmetici, logici e di confronto. La tabella seguente riassume i principali operatori. operatori aritmetici operatori logici operatori di confronto +, -, *, / NOT, AND, OR =, <> (diverso), <, <=, >, <=

Esempio 7: Trovare gli impiegati il cui stipendio superiore a 40 SELECT FROM WHERE * impiegato stipendio > 40

Bocchi Cinzia Ultimo aggiornamento: 15/09/2012

Resultset:
matr t1 t2 t3 101 202 301 cogn Sili Verdi Bisi stipendio 60 50 70 dipartimento No Su Is

Esempio 8: Trovare gli impiegati il cui stipendio compreso tra 60 e 70 (inclusi) SELECT FROM WHERE Resultset:
matr t1 t2 101 301 cogn Sili Bisi stipendio 60 70 dipartimento No Is

* impiegato stipendio >= 60 AND stipendio <= 70

Una condizione equivalente alla precedente esprimibile mediante loperatore BETWEEN. SELECT FROM WHERE * impiegato stipendio BETWEEN 40 AND 70

Esempio 9: Trovare gli impiegati il cui stipendio inferiore a 20 o superiore a 40 (esclusi) SELECT FROM WHERE Resultset:
matr t1 t2 t3 101 202 301 cogn Sili Verdi Bisi stipendio 60 50 70 dipartimento No Su Is

* impiegato stipendio <= 20 OR stipendio >= 40

Bocchi Cinzia Ultimo aggiornamento: 15/09/2012

Esempio 10: Trovare gli impiegati il cui stipendio non compreso tra 40 e 70 (inclusi) SELECT FROM WHERE * impiegato NOT (stipendio >= 40 AND stipendio <= 70)

oppure, analogamente SELECT FROM WHERE SELECT FROM WHERE * impiegato NOT (stipendio BETWEEN 40 AND 70) * impiegato stipendio < 40 OR stipendio > 70

Resultset: tabella vuota Esempio 11: Trovare gli impiegati del dipartimento Su o Is SELECT FROM WHERE * impiegato dipartimento = Su OR dipartimento = Is

Una condizione equivalente alla precedente esprimibile mediante loperatore IN. SELECT FROM WHERE * impiegato dipartimento IN ( Su, Is)

oppure, analogamente SELECT FROM WHERE o, ancora SELECT FROM WHERE * impiegato dipartimento <> No * impiegato dipartimento NOT IN ( No)

Bocchi Cinzia Ultimo aggiornamento: 15/09/2012

Resultset:
matr t1 t2 t3 201 202 301 cogn Neri Verdi Bisi stipendio 40 50 70 dipartimento Su Su Is

Esempio 12: Trovare gli impiegati il cui cognome inizia con R Loperatore LIKE consente di effettuare ricerche su parti di stringhe. Utilizza, a tal scopo, due caratteri jolly: % e _. Il carattere % indica un insieme di caratteri qualunque, mentre il carattere _ indica un carattere qualunque. SELECT FROM WHERE Resultset:
matr t1 102 cogn Rossi stipendio 40 dipartimento No

* impiegato cogn LIKE R%

Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Bocchi Cinzia Ultimo aggiornamento: 15/09/2012