This shows you the differences between two versions of the page.
bd:laboratoare:05 [2019/03/16 22:44] iulia.radulescu |
bd:laboratoare:05 [2021/03/30 13:17] (current) ciprian.truica [Exerciții individuale] |
||
---|---|---|---|
Line 2: | Line 2: | ||
==== Obiective ==== | ==== Obiective ==== | ||
+ | |||
+ | * Cross Join | ||
+ | * Inner Join | ||
+ | * Equi Join | ||
+ | * Natural Join | ||
+ | * Theta Join | ||
+ | * Left Outer Join | ||
+ | * Right Outer Join | ||
+ | * Full Outer Join | ||
+ | * Vertical Join | ||
==== Materiale ajutătoare ==== | ==== Materiale ajutătoare ==== | ||
+ | |||
+ | [[bd:resurse:tables|Resurse BD]] | ||
+ | |||
==== Noțiuni teoretice ==== | ==== Noțiuni teoretice ==== | ||
Line 14: | Line 27: | ||
* CROSS JOIN | * CROSS JOIN | ||
- | {{:bd:laboratoare:join_types.png?nolink&500|}} | ||
- | Un caz special este SELF JOIN care face JOIN pe o tabelă cu ea însăși. | + | Un caz special este **SELF JOIN** care face JOIN **pe o tabelă cu ea însăși**. |
+ | |||
+ | {{:bd:laboratoare:join-types.png?nolink&500|}} | ||
+ | |||
+ | Image source: http://kirillpavlov.com/blog/2016/04/23/beyond-traditional-join-with-apache-spark/ | ||
=== JOIN === | === JOIN === | ||
Line 25: | Line 41: | ||
* **column_alias** – este un nume alocat unei coloane(expresii) care va fi folosit în formatarea coloanei (numele care apare în antetul listei); | * **column_alias** – este un nume alocat unei coloane(expresii) care va fi folosit în formatarea coloanei (numele care apare în antetul listei); | ||
* **WHERE condition** – reprezintă o clauză (înlănțuire de condiții) care trebuie să fie îndeplinită în criteriul de selecție a înregistrărilor; | * **WHERE condition** – reprezintă o clauză (înlănțuire de condiții) care trebuie să fie îndeplinită în criteriul de selecție a înregistrărilor; | ||
- | * **ORDER BY {expresion|position} [ASC|DESC]** – ordonează înregistrările selectate după coloanele din expresie sau în ordinea coloanelor (selecterate în clauza SELECT) specificate prin poziție. | + | * **ORDER BY {expresion|position} [ASC|DESC]** – ordonează înregistrările selectate după coloanele din expresie sau în ordinea coloanelor (selectate în clauza SELECT) specificate prin poziție. |
<code sql> | <code sql> | ||
Line 39: | Line 55: | ||
=== CROSS JOIN (Produsul Cartezian) === | === CROSS JOIN (Produsul Cartezian) === | ||
* Produsul cartezian (Cross Join) a două tabele se obține prin concatenarea fiecărei linii dintr-o tabelă cu fiecare linie din cealaltă tabelă; | * Produsul cartezian (Cross Join) a două tabele se obține prin concatenarea fiecărei linii dintr-o tabelă cu fiecare linie din cealaltă tabelă; | ||
- | * Rezultatul este un număr de linii egal cu produsul cartezian dintre numărul de linii din fiecare tabela din cluaza FROM. Această situație este mai puțin practică și se întâlnește, de regulă, când sunt puse greșit condițiile. | + | * Rezultatul este un număr de linii egal cu produsul cartezian dintre numărul de linii din fiecare tabela din clauza FROM. Această situație este mai puțin practică și se întâlnește, de regulă, când sunt puse greșit condițiile. |
* Sintaxa CROSS JOIN este: | * Sintaxa CROSS JOIN este: | ||
<code sql> | <code sql> | ||
Line 212: | Line 228: | ||
== Right Outer Join == | == Right Outer Join == | ||
- | Fie două tabele A și B. Operația de Left Outer Join (A Right Outer Join B) returnează toate înregistrările din tabela B și, în cazul în care nu găsește o corespondență în tabela A va întoarce NULL, altfel va întoarce valorile selectate din tabela A. | + | Fie două tabele A și B. Operația de Right Outer Join (A Right Outer Join B) returnează toate înregistrările din tabela B și, în cazul în care nu găsește o corespondență în tabela A va întoarce NULL, altfel va întoarce valorile selectate din tabela A. |
* Sintaxa Right Outer Join (merge doar în Oracle): | * Sintaxa Right Outer Join (merge doar în Oracle): | ||
<code sql> | <code sql> | ||
Line 233: | Line 249: | ||
</code> | </code> | ||
== Full Outer Join == | == Full Outer Join == | ||
- | Fie două tabele A și B. Operația de Left Outer Join (A Right Outer Join B) returnează toate înregistrările din tabela A și B și, în cazul în care nu găsește o corespondență în tabela A sau B va întoarce NULL, altfel va întoarce valorile selectate din tabela A sau B. | + | Fie două tabele A și B. Operația de Full Outer Join (A Full Outer Join B) returnează toate înregistrările din tabela A și B și, în cazul în care nu găsește o corespondență în tabela A sau B va întoarce NULL, altfel va întoarce valorile selectate din tabela A sau B. |
* Sintaxa Full Outer Join (recomandată de ultimul standard SQL, merge în toate SGBD-urile) este: | * Sintaxa Full Outer Join (recomandată de ultimul standard SQL, merge în toate SGBD-urile) este: | ||
<code sql> | <code sql> | ||
Line 289: | Line 305: | ||
{{:bd:laboratoare:lab5_15.png?nolink&250|}} | {{:bd:laboratoare:lab5_15.png?nolink&250|}} | ||
+ | |||
+ | ====Exerciții individuale==== | ||
+ | - Să se facă o listă cu: | ||
+ | * Nume Angajat | ||
+ | * Departament Angajat | ||
+ | * Grad Angajat | ||
+ | * Nume Sef | ||
+ | * Departament Sef | ||
+ | * Grad Sef | ||
+ | |||
+ | Sa se afiseze toate rezutlatele, chiar daca nu se gasesc legaturi de JOIN intre intregistrarile din diferitele tabele. | ||