Ebben a fejezetben a relációs modell két formális nyelvét tárgyaljuk: a relációalgebrát és a relációkalkulust. Ahogy a 2. fejezetben tárgyaltuk, az adatmodelleknek — az adatbázis szerkezetének és megszorításainak definiálására szolgáló eszközökön kívül — tartalmazniuk kell olyan műveleteket, amelyekkel az adatbázis manipulálható. A relációs modellre vonatkozó alapműveletek halmaza a relációalgebra . Ezek a műveletek lehetővé teszik, hogy a felhasználók alapvető lekérdezéseket adhassanak meg. A lekérdezések eredménye egy új reláció, amelyet egy vagy több relációból kapunk. Az algebra műveletei tehát új relációkat állítanak elő, amelyek tovább manipulálhatók ugyanezen algebra műveleteivel. A relációalgebrai műveletek egy sorozata relációalgebrai kifejezést alkot, amelynek az eredménye szintén egy reláció, ami egy adatbázis-lekérdezés eredményét reprezentálja.
A relációalgebra számos okból kifolyólag nagyon fontos. Először is a relációs modell műveleteinek egy formális megalapozását biztosítja. A második, és talán a legfontosabb indok, hogy a lekérdezések implementálásának és optimalizálásának az alapját képezi a relációs adatbázis-kezelő rendszerekben (RDBMS-ekben). Harmadrészt bizonyos elemei az RDBMS-ek SQL standard lekérdező nyelvébe is beépülnek. Bár egyetlen ma kereskedelmi forgalomban lévő RDBMS sem nyújt felületet relációalgebrai lekérdezések készítéséhez, bármely relációs rendszer alapvető műveletei és függvényei a relációalgebrai műveleteken alapulnak. Ezeket a műveleteket részletesen tárgyaljuk a következő alfejezetekben.
Míg az algebra egy művelethalmazt definiál a relációs modellhez, a relációkalkulus egy magasabb szintű deklaratív jelölésrendszert biztosít a relációs lekérdezések megadásához. Egy relációkalkulusbeli kifejezés egy új relációt eredményez, amelyet olyan változókkal adunk meg, amik az adatbázisban tárolt relációk sorait (a rekord alapú kalkulusban) vagy oszlopait (a tartomány alapú kalkulusban) járják be. Egy kalkulusbeli kifejezésben nincs megadva egy műveletsorozat, amely megadná, hogy hogyan kell lekérni az eredményt — a kalkulusbeli kifejezés csak azt specifikálja, hogy az eredménynek milyen információkat kell tartalmaznia. Ez a fő különbség a relációalgebra és a relációkalkulus között. A relációkalkulus azért fontos, mert szilárd matematikai logikai alapokkal bír, és mert az RDBMS-ek standard lekérdező nyelve (az SQL) bizonyos elemeket a rekord alapú relációkalkulusból vesz át.[23]
A relációalgebrát gyakran tekintjük a relációs adatmodell szerves részének. A műveletei két csoportra oszthatók. Az egyik csoport a matematikai halmazelmélet halmazműveleteiből áll; ezek azért alkalmazhatók, mert a formális relációs modellben a relációt rekordok halmazaként definiáljuk. A halmazműveletek közé tartozik az unió, a metszet, a (halmaz)különbség és a Descartes-szorzat. A másik csoport olyan műveletekből áll, amelyeket speciálisan a relációs modellhez fejlesztettek ki — ilyen többek között a szelekció, a projekció és az összekapcsolás. Először a szelekció és a projekció műveleteit tárgyaljuk a 6.1. alfejezetben, mivel ezek unáris műveletek, amelyek egy reláción operálnak. Ezután a halmazműveleteket vesszük a 6.2. alfejezetben. A 6.3. alfejezetben pedig az összekapcsolással és egyéb összetett bináris műveletekkel foglalkozunk, amelyek két táblán operálnak. A példáinkban az 5.4. ábrán látható VÁLLALAT adatbázist használjuk.
Vannak olyan általános adatbázis-lekérdezések, amelyek nem hajthatók végre az eredeti relációalgebra műveleteivel, így további műveleteket hoztak létre, hogy az ilyen kéréseket is ki tudjuk fejezni. Ilyenek a csoportosító függvények, amely műveletekkel a táblák adatait lehet összegezni, illetve ilyenek az összekapcsolás és az unió műveletek további típusai is. Ezeket a műveleteket — amelyekkel a 6.4. alfejezetben foglalkozunk majd — az adatbázis alkalmazásokban játszott fontos szerepük miatt adták hozzá az eredeti relációalgebrához. Relációs műveleteket használó lekérdezésekre adunk példákat a 6.5. alfejezetben. Közülük néhány lekérdezés visszaköszön a későbbi alfejezetekben a különböző nyelvek illusztrálásakor.
A 6.6. és 6.7. alfejezetekben a relációs adatbázisok másik fő formális nyelvét, a relációkalkulust tárgyaljuk. A relációkalkulusnak két változata létezik. A rekord alapú relációkalkulust a 6.6., míg a tartomány alapú relációkalkulust a 6.7. alfejezetben tárgyaljuk. A relációkalkulus egy formális nyelv, amely a matematikai logika egyik ágán, a predikátumkalkuluson alapul. A rekord alapú relációkalkulusban a változók a rekordokon, míg a tartomány alapú relációkalkulusban az attribútumok tartományain (értékein) futnak végig. A 6.8. alfejezet összefoglalja a fejezetben leírtakat.
A szelekció használatával egy relációból kiválaszthatjuk a rekordoknak egy olyan részhalmazát, amely eleget tesz egy szelekciós feltételnek . Tekinthetünk a szelekcióra úgy is, mint egy szűrésre, amely csak azokat a rekordokat tartja meg, amelyek kielégítenek egy minősítő feltételt. A szelekció műveletét úgy is el lehet képzelni, mint a reláció egy horizontális felosztását rekordok két halmazára — azokra a rekordokra, amelyek kielégítik a feltételt és ki lesznek választva, illetve azokra a rekordokra, amelyek nem elégítik ki a feltételt, és így nem lesznek kiválasztva. Például azoknak a DOLGOZÓ rekordoknak a kiválasztásánál, amelyeknek az osztálya a 4-es osztály, vagy azoknál, amelyeknél a fizetés nagyobb 390000 forintnál, ezen két feltétel mindegyikét megadhatjuk egy szelekció művelettel a következőképpen:
σOsz=4(DOLGOZÓ)
σFizetés>390000(DOLGOZÓ)
Általánosságban a szelekció művelete
σszelekciós feltétel(R)
alakú, ahol a σ (a görög szigma) betűt használjuk a szelekció műveletének a jelölésére, míg a szelekciós feltétel egy logikai kifejezés, amelyet az R reláció attribútumaira írunk elő. Megjegyzendő, hogy R általában egy relációalgebrai kifejezés, amelynek az eredménye egy reláció — a legegyszerűbb ilyen kifejezés éppen egy adatbázisrelációnak a neve. Annak a relációnak, amit a szelekció művelet eredményez, ugyanazok lesznek az attribútumai, mint R-nek.
Egy, a 〈szelekciós feltétel〉-ben megadott logikai kifejezés
〈attribútumnév〉 〈hasonlító operátor〉 〈konstans érték〉
vagy
〈attribútumnév〉 〈hasonlító operátor〉 〈attribútumnév〉
alakú klózokból épül fel, ahol az 〈attribútumnév〉 R egy attribútumának a neve, a 〈hasonlító operátor〉 rendszerint az {=, ≤, <, ≥, >, ≠} operátorok valamelyike, a 〈konstans érték〉 pedig egy konstans érték az attribútum tartományából. A klózok korlátlanul összekapcsolhatók az and, or és not logikai operátorokkal, kialakítva egy általános szelekciós feltételt. Például azon dolgozók rekordjainak a kiválasztásához, akik vagy a 4-es osztályon dolgoznak és 325000 forintnál többet keresnek, vagy pedig az 5-ös osztályon dolgoznak és 390000 forintnál keresnek többet, a következő szelekció műveletet adhatjuk meg:
σ(Osz=4 AND Fizetés≥325000) OR (Osz=5 AND Fizetés≥390000)(DOLGOZÓ)
Az eredmény a 6.1. (a) ábrán látható.
6.1. ábra - Szelekció és projekció műveletek eredményei. (a) σ(Osz=4 AND Fizetés≥325000) OR (Osz=5 AND Fizetés≥390000)(DOLGOZÓ). (b) πVnév, Knév, Fizetés(DOLGOZÓ). (c) πNem, Fizetés(DOLGOZÓ).

Megjegyzendő, hogy a {=, ≤, <, ≥, >, ≠} halmazbeli hasonlító operátorok olyan attribútumokra alkalmazhatók, amelyeknek a tartományai rendezett értékek, mint például az egészek vagy a dátumok tartományai. A karakterláncok tartományait rendezettnek tekintjük a karakterek ábécé szerinti sorrendjére alapozva. Ha egy attribútum tartománya rendezetlen értékek halmaza, akkor csak a {=, ≠} halmazbeli hasonlító operátorok használhatók. Egy rendezetlen tartományra példa a Szín = {'piros', 'kék', 'zöld', 'fehér', 'sárga', …} tartomány, ahol nincs sorrend definiálva a különféle színek között. Egyes tartományok további hasonlító operátorokat is megengednek; például karakterláncok egy tartományán értelmezhető a RÉSZSZTRINGJE hasonlító operátor.
Egy szelekció művelet eredményét általában a következőképpen határozhatjuk meg. A 〈szelekciós feltétel〉-t egymástól függetlenül alkalmazzuk minden egyes R-beli t rekordra. Ezt úgy tesszük meg, hogy az Ai attribútum minden egyes szelekciós feltételbeli előfordulását helyettesítjük az ő t[Ai ] rekordbeli értékével. Ha így a feltétel igazzá válik, akkor a t rekord ki lesz választva. Minden kiválasztott rekord megjelenik a szelekció művelet eredményében. Az AND, OR és NOT logikai műveletek interpretációja a szokásos:
(felt1 AND felt2) akkor igaz, ha mind a (felt1), mind a (felt2) igaz; különben hamis.
(felt1 OR felt2) akkor igaz, ha vagy a (felt1), vagy a (felt2), vagy mindkettő igaz; különben hamis.
(NOT felt) akkor igaz, ha a (felt) hamis; különben hamis.
A szelekció művelete unáris művelet, ami azt jelenti, hogy csak egy operandusa van neki (ami egy reláció). A szelekció műveletet ráadásul minden egyes rekordra külön-külön alkalmazzuk; így a szelekciós feltétel nem vonatkozhat egyszerre egynél több rekordra. A szelekció műveletének az eredményeképpen kapott relációnak a foka — az attribútumainak a száma — ugyanannyi, mint az R foka. Az eredmény reláció rekordjainak a száma mindig kisebb vagy egyenlő, mint az R rekordjainak a száma. Azaz |σ C (R)| < |R| bármilyen C feltételre. Egy adott szelekciós feltétellel kiválasztott rekordok arányát a feltétel szelektivitásának nevezzük.
Megjegyzendő, hogy a szelekció művelete kommutatív , azaz
σ〈feltétel 1〉(σ〈feltétel 2〉(R)) = σ〈feltétel 2〉(σ〈feltétel 1〉(R)).
Ennélfogva szelekciós műveletek egy sorozata tetszőleges sorrendben alkalmazható. Továbbá mindig összekapcsolhatjuk szelekciós műveletek egy kaszkádját egyetlen szelekciós műveletté a konjunkciós operátorral (AND), azaz
σ〈feltétel 1〉(σ〈feltétel 2〉(…(σ〈feltétel n〉(R))…)) = σ〈feltétel 1〉 AND 〈feltétel 2〉 AND … AND 〈feltétel n〉(R).
Ha egy relációra egy táblaként gondolunk, a szelekció művelete néhány sort választ ki a táblából, míg a több sort elveti. A projekció művelete ugyanakkor bizonyos oszlopokat választ ki a táblából, míg a többi oszlopot elveti. Ha csak bizonyos attribútumai érdekelnek minket a relációnak, a projekció műveletét használjuk arra, hogy a relációt projektáljuk (levetítsük) ezekre az attribútumokra. Ezért a projekció műveletének eredményét úgy képzelhetjük el, mint a reláció egy vertikális felosztását két relációra: az egyik a szükséges oszlopokat (attribútumokat) és a művelet eredményét tartalmazza, a másik meg az elvetett oszlopokat. A dolgozók vezeték- és keresztneveinek, valamint a fizetéseiknek a kilistázásához a projekció műveletét például a következőképpen használhatjuk:
πVnév, Knév, Fizetés(DOLGOZÓ)
Az eredményül kapott relációt mutatja a 6.1. (b) ábra. A projekció műveletének általános alakja
π〈attribútumlista〉(R),
ahol a π (a görög pi) a projekció műveletét reprezentáló szimbólum, míg az 〈attribútumlista〉 a kívánt attribútumok listája az R reláció attribútumai közül. Ismét megemlítendő, hogy R általában egy relációalgebrai kifejezés, amelynek az eredménye egy reláció, amely a legegyszerűbb esetben mindössze egy adatbázisrelációnak a neve. A projekció műveletének az eredménye csak az 〈attribútumlista〉 attribútumaival rendelkezik, mégpedig abban a sorrendben, ahogyan azok a listában szerepelnek. Ennélfogva a foka egyenlő az 〈attribútumlista〉-beli attribútumoknak a számával.
Ha az attribútumlista kizárólag R nem kulcs attribútumait tartalmazza, valószínűleg akadnak majd duplikált rekordok. A projekció művelete eltávolítja a duplikált rekordokat, így a művelet eredménye egy rekordhalmaz, és ennélfogva egy érvényes reláció lesz. Ezt duplikáció eliminációnak nevezik. Tekintsük például a következő projekció műveletet:
πNem, Fizetés(DOLGOZÓ)
Az eredményt a 6.1. (c) ábra mutatja. Figyeljük meg, hogy a 〈'F', 325000〉 rekord csak egyszer jelenik meg a 6.1. (c) ábrán, habár ez az értékkombináció kétszer is előfordul a DOLGOZÓ relációban. A duplikáció elimináció a duplikációk felfedezése érdekében magában foglal egy csoportosítást, és ennélfogva több tennivalót igényel. Ha a duplikációkat nem távolítanánk el, az eredmény rekordoknak egy multihalmaza lenne egy halmaz helyett. Ez nem megengedett a formális relációs modellben, de elfogadható a gyakorlatban.
Egy projekció művelet eredményeként kapott relációban a rekordok száma mindig kisebb vagy egyenlő, mint az R-beli rekordok száma. Ha a projekciós lista R egy szuperkulcsa — azaz tartalmazza R valamelyik kulcsát —, akkor az eredmény relációnak ugyanannyi rekordja lesz, mint R-nek. Ráadásul
π〈lista 1〉(π〈lista 2〉(R) = π〈lista 1〉(R),
feltéve hogy 〈lista 2〉 tartalmazza a 〈lista 1〉-beli attribútumokat; ellenkező esetben a bal oldal egy hibás kifejezés. Figyelemre méltó továbbá, hogy a kommutativitás nem teljesül a projekció műveletére.
A 6.1. ábrán bemutatott relációknak nincsenek neveik. Általában különféle relációalgebrai műveleteket szeretnénk alkalmazni egymás után. Felírhatjuk a műveleteket egyetlen relációalgebrai kifejezésként a műveletek egymásba ágyazásával, vagy megtehetjük, hogy egyszerre csak egy műveletet alkalmazunk, és létrehozhatunk közbenső eredmény relációkat. Ez utóbbi esetben neveket kell adnunk azoknak a relációknak, amelyek a közbenső eredményeket tárolják. Az összes olyan dolgozó vezetéknevének, keresztnevének és fizetésének a lekérdezéséhez például, akik az 5-ös osztályon dolgoznak, egy szelekció és egy projekció műveletet kell alkalmaznunk. Felírhatunk egyetlen relációalgebrai kifejezést a következőképpen:
πVnév, Knév, Fizetés(σOsz=5(DOLGOZÓ))
A 6.2. (a) mutatja ennek a relációalgebrai kifejezésnek az eredményét. Egy másik lehetőségként konkrétan megmutathatjuk a műveletsorozatot is, nevet adva minden egyes közbenső relációnak:
OSZT5_DOLG ← σOsz=5(DOLGOZÓ)
EREDMÉNY ← πVnév, Knév, Fizetés(OSZT5_DOLG)
Gyakran egyszerűbb felbontani egy összetett műveletsorozatot közbenső eredmény relációk megadásával, mint felírni egyetlen relációalgebrai kifejezésként. Ezt a technikát a közbenső és az eredmény relációkban szereplő attribútumok átnevezésére is használhatjuk. Ez az olyan összetettebb műveletekkel kapcsolatban lehet hasznos, mint például az egyesítés (unió) vagy az összekapcsolás (join), ahogyan azt majd látni fogjuk. Az attribútumok átnevezéséhez egy relációban egyszerűen csak fel kell sorolnunk az új attribútumneveket zárójelek között, ahogyan azt a következő példában is tesszük:
TEMP ← σOsz=5(DOLGOZÓ)
R(Vezetéknév, Keresztnév, Fizetés) ← πVnév, Knév, Fizetés(TEMP)
Ezt a két műveletet a 6.2. (b) ábra illusztrálja.
6.2. ábra - Egy műveletsorozat eredménye. (a) πVnév, Knév, Fizetés(σOsz=5(DOLGOZÓ)). (b) Közbenső relációk használata és az attribútumok átnevezése.

Ha nem alkalmazunk átnevezést, egy szelekció művelet eredményeképpen kapott relációban az attribútumok nevei ugyanazok lesznek, mint az eredeti relációban voltak, ugyanabban a sorrendben. Egy projekció művelet esetén, ha nincs átnevezés, az eredmény relációnak az attribútumnevei a projekciós listában lévőkével lesznek azonosak, és abban a sorrendben fognak szerepelni, ahogyan a listában is megjelennek.
Unáris operátorként definiálhatunk egy formális átnevezés műveletet is, amely átnevezi egy reláció nevét vagy az attribútumneveit, vagy esetleg mindegyiket. Az általános átnevezés műveletet, amikor egy n-edfokú relációra alkalmazzuk, a következő három alak egyikével jelöljük:
ρ S(B 1, B 2, …, Bn )(R) vagy ρ S (R) vagy ρ(B 1, B 2, …, Bn )(R),
ahol a ρ (a görög rhó) szimbólumot az átnevezés művelet jelölésére használjuk, S az új relációnév, míg B 1, B 2, …, Bn az új attribútumnevek. Az első kifejezés a relációt és az attribútumokat is átnevezi, a második csak a relációt nevezi át, a harmadik pedig csak az attribútumokat. Ha R attribútumai (A 1, A 2, …, An ), ebben a sorrendben, akkor minden egyes Ai Bi -re lesz átnevezve.
[23] Az SQL a rekord alapú relációkalkulusra épül, de a relációalgebrából és azok kiterjesztéseiből is vesz át bizonyos műveleteket.