Differences

This shows you the differences between two versions of the page.

Link to this comparison view

bd:laboratoare:05 [2019/03/16 22:11]
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 13: Line 26:
   * FULL OUTER JOIN   * FULL OUTER JOIN
   * CROSS JOIN   * CROSS JOIN
-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 22: 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 36: 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 57: Line 76:
 <columns 50% 50%-> <columns 50% 50%->
 <​newcolumn>​ <​newcolumn>​
-{{ :​bd:​laboratoare:​lab5_1_1.png?​nolink&​350 |}}+{{:​bd:​laboratoare:​lab5_1_1.png?​nolink&​350|}}
 <​newcolumn>​ <​newcolumn>​
-{{ :​bd:​laboratoare:​lab5_1_2.png?​nolink&​350 |}}+{{:​bd:​laboratoare:​lab5_1_2.png?​nolink&​350|}}
 </​columns>​ </​columns>​
  
Line 107: Line 126:
 <columns 50% 50%-> <columns 50% 50%->
 <​newcolumn>​ <​newcolumn>​
-{{ :​bd:​laboratoare:​lab5_2_1.png?​nolink&​300}}+{{:​bd:​laboratoare:​lab5_2_1.png?​nolink&​300|}}
 <​newcolumn>​ <​newcolumn>​
-{{ :​bd:​laboratoare:​lab5_2_2.png?​nolink&​350}}+{{:​bd:​laboratoare:​lab5_2_2.png?​nolink&​350|}}
 </​columns>​ </​columns>​
  
 <columns 50% 50%-> <columns 50% 50%->
 <​newcolumn>​ <​newcolumn>​
-{{ :​bd:​laboratoare:​lab5_2_3.png?​nolink&​350}}+{{:​bd:​laboratoare:​lab5_2_3.png?​nolink&​350|}}
 <​newcolumn>​ <​newcolumn>​
-{{ :​bd:​laboratoare:​lab5_2_4.png?​nolink&​350}}+{{:​bd:​laboratoare:​lab5_2_4.png?​nolink&​350|}}
 </​columns>​ </​columns>​
  
 <columns 50% 50%-> <columns 50% 50%->
 <​newcolumn>​ <​newcolumn>​
-{{ :​bd:​laboratoare:​lab5_2_5.png?​nolink&​350}}+{{:​bd:​laboratoare:​lab5_2_5.png?​nolink&​350|}}
 <​newcolumn>​ <​newcolumn>​
-{{ :​bd:​laboratoare:​lab5_2_6.png?​nolink&​350}}+{{:​bd:​laboratoare:​lab5_2_6.png?​nolink&​350|}}
 </​columns>​ </​columns>​
  
Line 209: 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 230: 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 285: Line 304:
 <color red>Ex. 15.</​color>​ Să se selecteze funcțiile care se găsesc în departamentul 10 dar nu se regăsesc în departamentul 30. <color red>Ex. 15.</​color>​ Să se selecteze funcțiile care se găsesc în departamentul 10 dar nu se regăsesc în departamentul 30.
  
-{{:​bd:​laboratoare:​lab5_15.png?​nolink&​350|}}+{{:​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.
  
  
bd/laboratoare/05.1552767086.txt.gz · Last modified: 2019/03/16 22:11 by iulia.radulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0