Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Operatore di Ridenominazione
L'operatore di ridenominazione, denotato come A'←A(R), cambia il nome di un attributo. Tramite questa operazione non è possibile dare ad un nuovo attributo il nome di uno già esistente.
Operatore di Selezione
Una condizione di selezione su un insieme di attributi X è una formula proposizionale su X, ottenuta combinando con i connettivi logici (AND, OR, NOT) condizioni atomiche. La si indica con σ. Il risultato contiene le tuple che soddisfano la condizione (operatore) relazione. Tale operazione è sempre falsa se il campo coinvolto ha valore NULL, di conseguenza è necessario introdurre gli operatori IS NULL e IS NOT NULL per poter gestire anche questi casi.
Grado: è lo stesso della relazione.
Cardinalità: è lo stesso della relazione.
≤0 (F(R))≤(R)
Proiezione :
- data una relazione ed un insieme la proiezione di R su Y si indica con ed è una⊂X R(X) Y Y(R) relazione definita su Y e contenente le nuple di R considerandone solo i valori su R' Y, .Y(R)={t[Y]∣t∈R}
Grado :
- ≤• 1 Grado(Y(R))≤Grado(R)
Cardinalità :
- ≤• 1 (Y(R))≤(R) proiezione non sia su una superchiave.→ Join ←Il join è un operatore che combina dati contenuti in tabelle diverse, le righe del risultato del join sono ottenute concatenando le tuple degli operandi dove il valore del campo è uguale.
Proprietà del join :
- Un join si dice completo se ciascuna delle tuple di entrambe le relazioni partecipa al risultato.
- Un join si dice non completo se almeno una delle tuple di entrambe le relazioni non partecipa al risultato.
- Un caso particolare di join non
Completo è quello vuoto• Un caso particolare di join completo è quando ogni riga della prima si combina con ogni• riga della seconda, questo caso costituisce l'estremo superiore. Un altro caso particolare è un join dove in una tabella il campo è una chiave primaria, allora• la cardinalità del risultato è esattamente la cardinalità dell'insieme senza chiave. Possono sussistere più percorsi di join tra due tabelle.• Il join gode di proprietà commutativa e associativa (se effettuato sullo stesso percorso).•I diversi tipi di Join :Join Naturale :• siano , è una relazione su tale1(X1),2(X2)R1JOINR2 X1∪X2che .R1JOINR2={tsuX1∪1∣∃t1∈R1et2∈R2cont[X1]=t1et[X2]=t2}Cardinalità : in generale .≤• 0 R1JOINR2≤R1×R2Join esterno :• questo tipo di join inserisce nella relazione i dati che in altro modo non
Sarebbero stati inseriti, sostituendo con NULL i dati mancanti.
Sinistro: • garantisce che partecipino tutte le tuple della prima relazione. Cardinalità minima: R1
Destro: • garantisce che partecipino tutte le tuple della seconda relazione. Cardinalità minima: R2
Full: • garantisce che partecipino tutte le tuple di entrambe le relazioni. Cardinalità minima: max(R1,R2)
Theta-Join: • un join naturale tra due relazioni che non hanno attributi a comune fa saltare fuori un prodotto cartesiano, tale risultato non ha senso, a meno che non sia seguita da una selezione. Si tratta quindi di un join che unisce due tabelle che non hanno elementi a comune e successivamente opera una selezione. R1 JOIN condizione R2
Nel caso in cui nella condizione siano presenti solo operatori "=" per il confronto si parla di equi-join.
Quando lo si adopera su un vincolo di IR si esplicita una relazione tra due tabelle diverse: Livello sintattico:- I valori della tabella interna sono vincolati a comparire nella tabella esterna.
- Vengono resi espliciti dei dati che non sono contenuti né nella prima né nella seconda tabella.
SQL
Il SQL è il linguaggio di riferimento per l'interrogazione di DBMS relazionali. Lo Structured Query Language (SQL) contiene sia il DDL che il DML.
SELECT
Questa istruzione permette l'estrazione dei dati.
[ * | [Attributo, ...] ]
Select ➢ NomeTabella
From ➢
Questa operazione equivale alla proiezione nell'algebra relazione. Se viene scelto il * verrà visualizzata l'intera tabella, in caso contrario verranno visualizzate solo le colonne degli attributi scelti.
[ * | [Attributo, ...] ]
Select ➢ NomeTabella
From ➢
Condizione [ ]
Where =, <, >, <=, >=, <>, like [_(?),%(*)]
is [not] NULL - Tramite l'aggiunta di questa condizione è possibile scegliere solo alcune delle righe volute. La condizione prima espressa è costituita da un'espressione booleana calcolata riga per riga sugli attributi. La relazione risultato conterrà solo le righe per le quali la condizione è vera.
Oltre agli operatori di confronto (=, <, >, <=, >=, <> (diverso)) il SQL mette a disposizione l'operatore like, questo operatore supporta il confronto tra stringhe, in aggiunta è possibile usare due caratteri speciali _(?), che rappresenta un qualsiasi carattere, e %(*) che rappresenta una stringa di un numero arbitrario di caratteri.
Tra i vari operatori ci sono anche quelli che scandagliano i valori nulli.
op valueSelect as - NomeTabella NomeAlternativoFrom as - CondizioneWhere
op è un'operazione su un attributo, ad esempio "stipendio/12" restituisce nella relazione risultante
il valore dello stipendio mensile. È l'operatore di ridenominazione, nel caso precedente può essere utilizzato: "stipendio/12 as StipendioMensile". Può essere usato anche nelle tabelle per rendere il nome più veloce da scrivere o più intuitivo per capire l'operazione in atto.- Select
- Tabella1, Tabella2
- From
- Tabella1.attributo=Talbella2.attributo, ...
- Where
- Naturalmente può essere necessario combinare il risultato di più tabelle, per fare ciò è necessario indicare le tabelle da prendere in considerazione e esplicitare il criterio col le quali queste sono correlate. Questa operazione prende il nome di theta-join, viene eseguita attraverso due passaggi:
- prodotto cartesiano.
- selezione delle righe attraverso un criterio.
- Naturalmente può essere necessario combinare il risultato di più tabelle, per fare ciò è necessario indicare le tabelle da prendere in considerazione e esplicitare il criterio col le quali queste sono correlate. Questa operazione prende il nome di theta-join, viene eseguita attraverso due passaggi:
<p>è• associato un significato ben preciso. Effettuare un join con la condizione di uguaglianza permette di estendere la prima tabella• con le informazioni contenute nella seconda. Come visto in precedenza tramite l'operatore di ridenominazione è possibile definire più• istanze della stessa tabella per poter effettuare operazioni sulla stessa tabella.• <p>[ ] AttributoSelect distinctNomeTabella• FromI dati estratti possono ripetersi, infatti il costo per eliminare le ripetizioni sarebbe troppo alto epotrebbe essere non essere necessario. Tramite l'operatore distinct è possibile imporre al DBMS dicancellare i doppioni. [ * | [Attributo, … ] ]Select <p>➊ Tabella1 Tabella2 Tabella1.attributo=Talbella2.attributoFrom join on➋ CondizioneWhere➌Questa è una sintassi esplicita ed equivalente del join visto prima. T1 [ ] T2 T1.attr=T2.attrFrom TYPE join on
= [[ ] [ ]]TYPE inner|natural|left|right|full outer
Tramite questa nuova sintassi è possibile usare il join preferito, quello di default è inner che corrisponde al theta-join.
[ * | [Attributo, ... ] ]Select
NomeTabellaFrom
CondizioneWhere
Attributo1 [ ] { , Attributo2 [ ] }order by asc|desc asc|desc
Quest'ultima clausola permette di ordinare le righe della tabella risultante secondo un attributo, se questo attributo avesse più righe uguali sarebbe possibile ordinarlo secondo il secondo (se esplicitato) e così via. Di default la clausola pone l'ordine ascendente.
[ * | Attributo ]Select OpAggregato ( )
OpAggregato := < count|sum|avg|min|max >
NomeTabellaFrom
CondizioneWhere
Gli operatori aggregati non possono essere nidificati. Analizziamoli uno alla volta :
ListaAttributi
• Count ( < * | [ distinct | all ] > ) l'opzione * restituisce il numero di righe
;• l'opzione restituisce il numero di righe con valore diverso e non nullo nella• distinctListaAttributi ; l'opzione , è il valore di default, restituisce il numero di righe di valore non nullo• alldegli attributi in ListaAttributi ;• < sum | avg > ( [ distinct | all ] listaAttributi )la somma e la media ammettono come argomento solo le espressioni che rappresentano• valori numerici o intervalli di tempo ;• < max | min > ( listaAttributi )il massimo e il minimo richiedono solamente che venga espresso un ordinamento• sull'espressione.[ * | [Attributo, … ] ]
Select➢ NomeTabellaFrom➢ CondizioneWhere➢ Attributo [, Attributo]Group by➢questa direttiva permette di raggruppare le righe del risultato secondo un valore comune, è utileunire gli operatori aggregati per avere statistiche sui dati. Naturalmente non è possibile usareoperatori aggregati sui valori raggruppati.
Se si vuole conoscere dei dati in un'altra tabella è necessario raggruppare per un ulteriore valore di quella tabella.
Attributo