Union: $\cup$
Intersection: $\cap$
Difference: $-$
Rename: $\rho_{NewName\larr OldName}$
Select: $\sigma_{Predicate}(Relation)$ dove
Predicate è una espressione booleana sulle tuple delle Relation.
Esempio:
Tutti gli impiegati che guadagnano più di 50
$\sigma_{Salary > 50}$
Project: $\Pi_{AttributeList}(Relation)$
Join:
Natural Join: produce un risultato sull’unione degli attributi degli operandi
Dati $R_1(X_1), R_2(X_2)$, $R_1\Join R_2$ è una relazione su $X_1 X_2$
In un Full Join tutte le tuple contribuiscono al risultato finale;
In un “Not Full” Join alcune tuple restano fuori;
Outer Join: un Join in cui viene messo null
per valori di tuple che normalmente verrebbero scartate,
$=\Join$ Left Outer Join: mantiene tutte le tuple del primo operando
$\Join=$ Right Outer Join: Mantiene tutte le tuple del secondo, è come fare il left ma invertendo gli operandi
$=\Join=$ Full Outer Join: Mantiene tutte le tuple di entrambi;
Prodotto Cartesiano: è un Natural Join ma fra due relazioni che non hanno attributi in comune, in pratica utile solo se accompagnato da una Select:
$\sigma_{condition}(R_1\Join R_2)$.
Dal momento che la Join di solito assume significato se seguita da una Select, esiste la Theta-Join: $\R_1\Join_{Condition} R_2$
La Equi-Join è una Theta-Join in cui tutte le R atomiche sono relazioni di equivalenza, è molto più usata del caso generale perché permette di fare una Join e rinominare senza fare una operazione di rename in più: $R_1\Join_{Attr1:=Attr2} R_2$