È un linguaggio formale completamente procedurale per interrogare una base di dati relazionali. Si fonda sul concetto di relazione matematica ed è la base dei database relazionali. Consiste di un insieme di operatori che possono essere applicati a una (operatori unari) o due (operatori binari) istanze di relazione e forniscono come risultato una nuova istanza di relazione.
N.B.: Bisogna sempre ricordare che le operazioni di SQL possono creare duplicati, mentre quelle dell’algebra relazionale lavorano su insiemi, rimuovendo/non ammettendo duplicati.
Il grado di una relazione è il numero di attributi che la compongono.
La cardinalità è il numero di tuple di una relazione.
In SQL il concetto di dominio si traduce concretamente nel tipo degli attributi.
Operazioni
Unarie
Binarie
L’unica che agisce (temporaneamente) sullo schema
Vedi trovare la tupla con l’attributo massimo in un’istanza
Esempi
Esempio 1 (semplice)
Considerando le tabelle:
Auto(targa, cilindrata, modello, città, posti) Moto(targa, cilindrata, modello, regione)
Restituisci targa, cilindrata, modello di auto circolanti a Roma con 2 posti e moto circolanti nel lazio.
Procedimento:
- A = seleziona le auto che circolano nella Città Roma e hanno 2 posti.
- B = seleziona le moto che circolano nella Regione Lazio.
- A1 = proietta la targa, la cilindrata e il modello su A.
- B1 = proietta la targa, la cilindrata e il modello su B.
- Restituisci A1 unita a B1.
Espressione relazionale:
Esempio 2 (il più difficile possibile)
- pittore(id, nome, cognome, data_n, data_m)
- quadro(id, titolo, data, pittore)
Per ogni pittore in vita, trovare nome, cognome e titolo del primo quadro dipinto