Documente Academic
Documente Profesional
Documente Cultură
Lucrare laborator 5
Obiective
Consultarea datelor din mai multe tabele
Tipuri de joncţiuni
Arhitectura schemei HR
1.1. Echijonctiunea
Echijoncţiunea (equijoin, simple join sau inner join) este o legătură între tabele care
combină linii ce au valori echivalente pentru coloanele specificate.
Sintaxa ORACLE
Sintaxa SQL:1999
Daca mai multe coloane au aceleaşi nume, dar tipurile datelor nu corespund, se
poate modifica clauza NATURAL JOIN prin folosirea clauzei USING pentru a
specifica coloanele care vor fi utilizate pentru echi-join.
Baze de Date
Exemplu:
Să presupunem ca se doreşte ca rezultat un tabel cu 3 coloane: numele, prenumele angajaţilor
şi numele departamentului. Cele trei coloane nu provin din acelaşi tabel din baza de date
(first_name şi last_name aparţin tabelei EMPLOYEES, iar department_name tabelei
DEPARTMENTS):
Aliasuri de tabele
Alias-ul unui tabel este definit în clauza FROM, imediat după numele tabelului. Prin utilizarea
aliasurilor de tabele se simplifica interogările diminuându-se dimensiunea codului şi se
îmbunătăţesc performantele. În principiu un alias poate avea pana la 30 de caractere, dar este
indicat sa nu se ajungă la un număr atât de mare. Atunci când se defineşte un alias pentru
tabel este obligatorie folosirea lui în locul numelui tabelului în clauza SELECT.
Exemple:
1.Să se afişeze un tabel cu 3 coloane: numele, prenumele angajaţilor şi numele
departamentului.
Ca şi la interogările care folosesc o singură tabelă, se poate folosi operatorul AND pentru a
restricţiona liniile selectate sau clauza GROUP BY pentru a grupa datele.
Baze de Date
Exemple:
1.Să se afişeze numele, prenumele angajaţilor şi numele departamentului, pentru angajaţii cu
id-ul mai mic decât 200.
Acest tip de joncţiune este utilizat atunci când nu există o potrivire exactă între coloanele
specificate. O non-echijonctiune conţine, în condiţia de legătura specificata, alţi operatori
decât "=", cum ar fi: <=; =>; BETWEEN.
Sintaxa ORACLE
Exemple:
Exemple:
Observaţii:
1. Operatorul pentru joncţiunea externa (+) poate sa apară numai intr-o parte a expresiei - în
partea din care lipseşte informaţia.
2. O condiţie care implica o joncţiune externa, nu poate utiliza operatorul "IN" , sau nu poate
fi legată de o altă condiţie prin operatorul "OR"
Baze de Date
Exemplu: Se doreşte găsirea tuturor persoanelor care au fost angajate în firmă la o dată
ulterioara datei la care a fost angajată persoana 'Irene Mikkilineni'.
În acest caz, tabelul Employees va fi accesat de doua ori: prima oara pentru a găsi
înregistrarea corespunzătoare pentru e.first_name = 'Irene' AND e.last_name = 'Mikkilineni',
cu toate valorile corespunzătoare ale câmpurilor (inclusiv hire_date = hire_date1), după care
se vor determina acele înregistrări ale căror valori în câmpul hire_date sunt superioare valorii
hire_date1.
2. Arhitectura schemei HR
Definiţie 1. O cheie primara (primary key - PK) este o cheie candidata careia proiectantul îi
confera un rol special de accesare si identificare a tuplurilor relatiei. În plus, se impune ca
atributelor cheii primare sa nu admita valori de NULL sa nu fie modificate prin operatii de
actualizare a datelor.
Definiţie 2. O cheie straina (foreign key - FK) este o multime de atribute FK ale unei relatiei
R1 care refera relatia R2 si satisface urmatoarele conditii:
a) atributele cheii straine FK sunt definite pe domenii compatibile cu cele ale atributelor
unei cheii candidate CK a relatiei R2 si
b) combinatia de valori ale atributelor FK într-un tuplu din relatia R1, fie este identica cu
combinatia de valori ale atributelor CK a unui tuplu oarecare din starea curenta a
relatiei R2, fie ia valoarea NULL.
Cheia straina realizeaza asocierea N:1 între relatiile R1 si R2 (ceea ce este echivalent cu
asocierea 1:N între relatiile R2 si R1) si reprezinta o constrângere între doua relatii, numita
constrângere referentiala . Relatia care contine cheia straina se numeste relatia care refera (R1
în definitia de mai sus), iar relatia care contine cheia candidata se numeste relatia referita (R2
în definitia de mai sus).
Joncţiunile pot conţine una sau mai multe tabele între care există asocieri (1:N, N:M). Pentru
a facilita căutarea informaţiilor, schema din figura următoare prezintă asocierile între tabelele
schemei HR.
Baze de Date
Exerciţii
1. Afişaţi numele, numărul şi numele job-ului pentru toti angajaţii.
2. Afişaţi numele, numărul şi numele job-ului pentru toti angajaţii cu job-ul
Programmer.
3. Afişaţi numele angajaţilor, numele departamentului în care lucrează şi numele job-
ului.
4. Scrieti o cerere care sa intoarca numele, numarul şi numele departamentului şi job-ul
tuturor celor care lucreaza în Seattle.
5. Afişaţi toate locaţiile (oraşul şi ţara) din Europa.
6. Afişaţi numele departamentelor din Canada.
7. Afişaţi numele departamentelor, numărul de angajaţi şi salariul mediu pentru fiecare
departament.
8. Gasiti care sunt numele acelor departamente în care salariul maxim este mai mare
dacat 10000.
9. Afisati numarul de tari care sunt inregistrate pentru fiecare regiune.
10. Afisati numele job-urilor, salariul mediu pentru fiecare si nr de angajati pentru job-
urile de vanzari (Sales).
11. Scrieţi o interogare care afişează numele şi job-ul angajaţilor care lucrează în acelaşi
departament cu angajatul cu numele Luis Popp.
12. Scrieti o interogare care sa afiseze numele şi identificatorii angajatilor precum şi
numele şi identificatorul managerului caruia ii este subordonat fiecare. Etichetati
coloanele astfel: "Angajat"," Marca_ang"," Manager", " Marca_man". Salvati
interogarea intr-un script.
Baze de Date
13. Gasiti numele şi salariul fiecarui angajat care este subordonat managerului cu
numele King.
14. Creaţi o interogare care are ca rezultat afişarea locaţiei (id şi oraş) şi a numelui
departamentelor. Includeţi toate locaţiile, chiar dacă nu există niciun departament
corespunzător.
15. Creaţi o interogare care afişează numele ţărilor şi oraşelor. Includeţi toate ţările, chiar
dacă nu există niciun oraş corespunzător în tabelul locations.