0% au considerat acest document util (0 voturi)
5 vizualizări43 pagini

BD 07

Încărcat de

kisalovey78
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
5 vizualizări43 pagini

BD 07

Încărcat de

kisalovey78
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Baze de date

Universitatea “Transilvania” din Brasov


[Link]. Costel Aldea
[Link]@[Link]
Selecția (sau restricția)
Selecția (sau restricția – select, restriction) intr-o relație r(R) - definita astfel:
σp(r) = {t | t ∈ r and p(t)}
Unde p, predicatul selecției, este o formula de calcul propozițional compusa din termeni conectați
prin operatorii booleeni and (∧), or (v)‚ not (¬)
Fiecare termen este de forma:
 <atribut> op<atribut> sau
 <atribut> op <constanta>, unde
 op este un operator de comparație: =, ≠, >, ≥. <. ≤
Tuplul t este selectat (introdus in rezultat) daca p(t)=TRUE
 In limbajul SQL: SELECT * FROM tabel WHERE p;
În termenii folosiţi în limbajul SQL, restricţia selectează o parte din liniile tabelului operand
 Exemple (bd World):
SELECT * FROM city where CountryCode=‘ROM’;
SELECT * FROM country WHERE Continent='Europe';
SELECT * FROM country WHERE Continent='Europe' and Population >
10000000;

[Link]@[Link] 2
Proiectia
Proiectia (project) pe atributele A1, A2, .. Ak intr-o relatie r(R) se notează:
ΠA1, A2, …Ak(r), unde A1 ∈ R, A2 ∈ R, …Ak ∈ R
 Rezultatul este o relatie cu k atribute, cele din lista data
 Daca {A1, A2, …Ak} nu contine o supercheie, pot sa apara tupluri duplicat;
teoretic, tuplurile duplicat se elimina, deoarece rezultatul este o multime
 In limbajul SQL proiectia se exprima astfel:
SELECT DISTINCT A1, A2, …Ak FROM R
Daca nu se introduce parametrul DISTINCT, nu se elimina tuplurile duplicat
Exemplu (db World): SELECT DISTINCT CountryCode FROM City;

[Link]@[Link] 3
Operația de joncțiune naturala (1)
 Jonctiunea naturala (natural join) combina tuplurile din doua relatii
 Fie multimile de atribute: A = {A1,A2,...Am} , B= {B1,B2,...Bn}, C={C1,C2,…Ck}
si doua relatii r(R) si s(S), unde:
 R={A, B}, S = {B, C}
 deciatributele R ∩S = B = {B1,B2,...Bn} sunt comune celor douărelaţii
 Joncţiunea naturală este o relatie q = r ⋈ s, care se obţine în felul următor:
 se calculează produsul cartesian al celor doua relatii: p = r x s, P = {A, R.B, S.B, C};
 din tuplurile produsului cartesian se selecteza acele tupluri care au valori egale pentru atributele
comune (B1,B2,...Bn): R.B = S.B, adică R.B1=S.B1, R.B2=S.B2,..
 se face proiectia rezultatului pe multimea de atribute R ∪S = {A, B, C}
 Schema relatiei rezultat este Q = R ∪ S = {A, B, C}
q = r ⋈ s = ΠA,B,C σ(r.B1=s.B1 AND r.B2=s.B2 …AND [Link] = [Link])(r x s)
 Atributele comune R.B si S.B trebuie să fie compatibile in cele doua relatii; daca
sunt compatibile, ele se considera identice chiar dacă au denumiri diferite, si în
reuniunea atributelor R ∪ S se introduc o singură dată
 Cazul cel mai frecvent de jonctiune naturala: intre doua relatii asociate (1:N),
atributul comun fiind cheia straina – cheia primara (candidata) referita

[Link]@[Link] 4
Operatia de jonctiune naturala (2)
 Exemplul 1: r ⋈ s = ΠA,B,C,D,E σ(r.D = s.D )(r x s)

 In SQL trebuie sa fie introduse explicit lista atributelor rezultatului si condițiile de egalitate
ale atributelor comune: SELECT A,B,C,R.D,E FROM R, S WHERE R.D = S.D;
 Exemplul 2: Angajat ⋈ SECTII; cheia straina: [Link]
SELECT IdAngajat, [Link], Prenume, DataNasterii, Adresa, Salariu, [Link], [Link],
Buget FROM Angajat a, Sectie s WHERE [Link]=[Link];
 Exemplul 3:(bd World) city ⋈ country; cheia straina: [Link]
SELECT ID, [Link] Oras, CountryCode 'Cod Tara', [Link], [Link]
Tara,Continent, …. from city, country where [Link]=[Link] order by
[Link];
Daca nu se afiseaza toate atributele joncţiunii, înseamnă ca s-a combinat cu o proiecţie

[Link]@[Link] 5
Joncţiuni interne şi externe externe
 Joncţiunea naturală se mai numeşte şi joncţiune internă şi se mai poate exprima in SQL cu cuvintele cheie
INNER JOIN
 Exemplu de joncţiune (combinată cu o proiecţie si o selectie) (bd World)
SELECT [Link] Oras, Code 'Cod Tara', [Link] Tara, Continent FROM city INNER JOIN
country ON CountryCode=Code WHERE Continent='Antarctica' OR Continent = 'Europe'
ORDER BY Continent;
 Joncţiunea externă introduce în plus toate liniile care exită în prima relaţie (pentru LEFT OUTER JOIN)
sau în cea de-a doua relaţie (pentru RIGHT OUTER JOIN) şi pentru care nu există linii în cealălaltă
relaţie care să îndeplinească condiţia de join; exemplu:
SELECT [Link] Oras, Code 'Cod Tara', [Link] Tara, Continent FROM city RIGHT OUTER
JOIN country ON CountryCode=Code WHERE Continent='Antarctica' OR Continent = 'Europe'
ORDER BY Continent;
 Se vor afişa si ţările care nu au nici un oras înscris în tabelul city.

[Link]@[Link] 6
Operaţia de diviziune

Fie relaţiile r(R) si s(S), unde:


 R = {A, B} unde A={A1,A2,..Am}, B={ B1,B2,..Bn}
 S = {B}

 Relaţia q = r÷s are schema Q = R – S = {A} si:


r÷s = { t | t ∈ΠR-S (r) ∧ ∀u∈s ( tu ∈ r) }
unde tu inseamna concatenarea tuplurilor t si u
 În limbajul SQL, diviziunea se exprimă printr-o instrucţiune SELECT, introducând explicit
toate conditiile impuse valorilor atributelor

[Link]@[Link] 7
Rezumat: operatiile algebrei relationale
 Algebra relaţională este o colecţie de operaţii asupra relaţiilor
 Cele opt operaţii propuse de [Link] nu constituie o mulţime minimală de
operaţii ale algebrei relaţionale
 Mulţimea minimă de operaţii ale algebrei relaţionale consta din cinci operaţii
primitive, pe baza cărora se poate construi orice expresie de algebra
relaţionala:
 Reuniunea
 Diferenţa
 Produsul Cartesian
 Restricţia (selectia)
 Proiecţia
 Celelalte operaţii se pot exprima prin intermediul acestora:
 Intersecţia se poate exprima prin expresia: R∩S = R – (R–S);
 Joncţiunea este o proiecţie a unei restricţii a produsului cartezian al relaţiilor;
 Diviziunea este o proiecţie a unei restricţii asupra relaţiei deîmpărţit
 Si celelalte trei operaţii sunt deosebit de utile în formularea interogărilor, astfel
încât algebra relaţională a păstrat toate cele opt operaţii propuse de [Link],
la care s-a adăugat operaţia de redenumire a atributelor

[Link]@[Link] 8
Formularea interogărilor
 Interogarea este operația prin care se obțin informaţiile dorite (care îndeplinesc o anumita
condiție) dintr-o bază de date. O interogare:
 se formulează mai întâi în limbaj natural,
 apoi se exprima într-un limbaj abstract de interogare (algebra relaţională sau calculul relaţional),
 se transpune în limbajul de interogare al SGBD-ului folosit (ex., limbajul SQL),
 iar aplicația client transmite SGBD-ului instrucțiunea (sau instrucțiunile) obținute
 Sistemul SGBD prelucrează programul interogării în mai multe faze:
 analiza lexicală, sintactică şi semantică
 optimizarea interogării
 generarea codului
 execuția si returnarea rezultatului
 În algebra relaţională o interogare se formulează printr-o expresie care definește următoarele
elemente:
 Lista atributelor relaţiei rezultat, care se numesc atribute de proiecţie;
 Lista relaţiilor din care se extrag informaţiile
 Condiţiile pe care trebuie să le îndeplinească tuplurile relaţiei rezultat.
 Sunt posibile două situaţii:
 interogări care se rezolvă în cadrul unei singure relaţii
 interogări care se rezolvă folosind două sau mai multe relaţii ale bazei de date

[Link]@[Link] 9
Interogări intr-o singură relaţie
 Interogare in relatia r(R):
 Expresia de algebra relationala: q = Πlista_atributeσp(r)
 Instructiunea SQL: SELECT lista_atribute FROM R WHERE p = TRUE;
 Exemplul 1: Fie relaţia Angajat şi interogarea: „Care sunt numele şi prenumele angajaţilor
care au un salariu mai mare sau egal cu 2000?”.
 Expresia de algebră relaţională: q = ΠNume, PrenumeσSalariu >= 2000(Angajat)
 Instrucţiunea SQL:
SELECT Nume, Prenume FROM Angajat WHERE Salariu >= 2000;
 Exemplul 2: (bd - World): “Care sunt numele si populatia oraselor din tara cu codul
‘ROM’?”
 Expresia de algebră relaţională: q = ΠName, Population σcountry_id=‘ROM’(city)
 Instrucțiunea SQL:
SELECT Name, Population FROM city WHERE CountryCode=‘ROM';
 Exemplul 3: Fie relaţia Angajat şi interogarea: „Care sunt numele, prenumele si adresa
angajaţilor care lucrează in secția numărul 1?”.
 Expresia de algebră relaţională: q = ΠNume, Prenume, Adresa σIdSectie = 1(ANGAJATI)
 Instrucțiunea SQL:
SELECT Nume, Prenume, Adresa FROM ANGAJATI WHERE IdSectie=1;

[Link]@[Link] 10
Interogări in două sau mai multe relaţii
 Daca atributele de proiecţie şi atributele din condiţia de interogare nu aparţin unei
singure relaţii, pentru rezolvarea interogării trebuie să fie folosite toate acele
relaţiile care, împreună, conţin atributele şi asocierile necesare
 Conceptual, o astfel de interogare se rezolvă astfel:
 se construiește mai întâi o relaţie care să conţină toate atributele implicate prin combinarea relaţiilor
necesare, folosind operaţii de produs cartezian sau joncţiuni;
 in relația obtinuta se aplica o selecție (restricție) (cu condiţia de interogare p);
 apoi se face proiecţia (pe atributele de proiecţie).
 Expresia generala de algebra relaționala a interogării este:
q= Πlista_atributeσp(r x s x t...)
 Daca intre relațiile din produsul cartezian exista atribute comune care trebuie sa
aiba valori egale (de regula, perechile cheie străină - cheie candidata) atunci se pot
face operaţii de joncţiune:
q= Πlista_atributeσp AND conditii-join(r ⋈ s ⋈ t...)
 O interogare poate conţine una sau mai multe subinterogări
 In limbajul SQL, o interogare se exprima prin instrucțiuni SELECT in care:
 clauza WHERE combina atat conditiile impuse valorilor atributelor cat si condițiile de jonctiuni
 Joncțiunile se pot specifica şi în clauza FROM (cu INNER JOIN, OUTER JOIN)

[Link]@[Link] 11
Interogări in două relaţii
A. Fie interogarea: Care sunt numele, prenumele, funcţia, salariul şi denumireasecţiei în care
lucrează angajaţii?
 Expresia de algebră relaţională este: q = ΠNume, Prenume,Salariul, Denumire(Angajat ⋈ Sectie)
 Instructiunea SQL corespunzatoare acestei interogări:
SELECT Nume, Prenume, Salariul, Denumire FROM Angajat, Sectie WHERE [Link] =
[Link]
 Se efectueaza o “navigare” în baza de date, pe atributul comun (IdSectie)

B. Fie interogarea: Care sunt numele, prenumele, funcţia şi salariul angajaţilor care lucrează în
secţia cu denumirea ‘Productie’?
 q = ΠNume, Prenume, Functia, SalariulσDenumire= ‘Productie’(Angajat ⋈ Sectie)
 SELECT Nume, Prenume, Functia, Salariul FROM Angajat, Sectie WHERE [Link]
= [Link] AND Denumire= ‘Productie’;

[Link]@[Link] 12
Interogări in trei relaţii (1)
 Fie următoarele relații asociate din baza de date Cinemagia:
 FILM(film_id, title, description, release_year, ....)
 ACTOR(actor_id, first_name, last_name, last_update)
 FILM_ACTOR(film_id, actor_id, last_update)
 Interogarea: “În ce filme au jucat fiecare din actorii din baza de date Cinemagia?”
 q = Πactor_id, first_name,last_name,title(film ⋈ film_actor ⋈ actor)
 Instructiunea SQL:
SELECT ACTOR.actor_id, first_name, last_name, title
FROM FILM, FILM_ACTOR, ACTOR
WHERE FILM.film_id = FILM_ACTOR.film_id AND ACTOR.actor_id =
FILM_ACTOR.actor_id ORDER BY ACTOR.actor_id;
 Se poate folosi şi sintaxa INNER JOIN:
SELECT ACTOR.actor_id, first_name, last_name, title
FROM (FILM INNER JOIN FILM_ACTORON
FILM.film_id=FILM_ACTOR.film_id) INNER JOIN ACTORON
ACTOR.actor_id = FILM_ACTOR.actor_id ORDER BY....;

[Link]@[Link] 13
Interogări in trei relaţii (2)

[Link]@[Link] 14
Interogări in trei relaţii (3)

[Link]@[Link] 15
Subinterogări
 Subinterogările sunt operaţii care determină diferite date (valori scalare, tabele
rezultat, număr de elemete etc.) folosite în interogarea de bază
 Subinterogările pot conţine la rândul lor alte subinterogări
 Exemplul 1: Care sunt angajaţii (nume, prenume, adresa) care lucrează în aceeaşi
secţie cu angajatul cu numele Ionescu şi prenumele Ion?
 Se determină printr-o subinterogare în ce secţie lucrează angajaul dat
 Se selectează toţi angajaţii din acea secţie:
SELECT Nume, Prenume, Adresa FROM Angajat
WHERE IdSectie = (SELECT IdSectie FROM Angajat WHERE Nume = 'Ionescu'
AND Prenume = 'Ion');
 Exemplul 2: Care sunt numele, prenumele, denumirea secţiei şi salariul angajaţilor
care au salariul egal cu salariul maxim pe una din secţii:
 Se determină printr-o subinterogare tabelul cu valori maxime ale salariului în fiecare secţie
 Se selecteză angajaţii care au salariul în mulţimea salariilor maxime pe sectii:
SELECT Nume, Prenume, Salariul, Denumire FROM Angajat INNER JOIN Sectie ON
[Link]=[Link]
WHERE Salariul IN (SELECT MAX(Salariul) FROM Angajat Group By
IdSectie);

[Link]@[Link] 16
Instrucţiuni pentru selecţia datelor

 Instrucţiunile de selecţie reprezintă una din categoriile cele mai


importante ale limbajului SQL
 Indiferent dacă sunt cereri simple sau complexe, cuvântul cheie este
SELECT
 Pentru cererile de interogare simple, sintaxa instrucţiunii este

SELECT [domeniu] listă_selecţie


FROM nume_tabel1, nume_tabel2,…
[WHERE criteriu_selecţie]
[ORDER BY câmpuri_criteriu [ASC|DESC]];

[Link]@[Link] 17
Cereri de interogare simple

 Domeniu
 Specifică o opţiune de includere sau eliminare din rezultatul
selecţiei, a înregistrărilor care conţin duplicate
 Opţiunile posibile sunt:
 ALL cere includerea tuturor înregistrărilor care îndeplinesc
condiţiile impuse
 DISTINCT cere eliminarea înregistrărilor care conţin duplicate
în câmpurile selectate, afişând numai o apariţie a acesteia.
 DISTINCTROW cere eliminarea înregistrărilor care conţin
duplicate în ansamblul lor, nu numai în câmpurile selectate,
afişând numai o apariţie a acesteia

[Link]@[Link] 18
Cereri de interogare simple

 Listă_selecţie cuprinde câmpurile care dorim să apară în


tabelul cu rezultatele interogării
 Clauza FROM specifică numele tabelului sau tabelelor pe
care se face cererea de interogare. Pentru mai multe tabele,
numele acestora se separă cu „,”
 Pe lângă tabele, ca sursă de informaţii pot apărea şi interogări
deja create

[Link]@[Link] 19
Cereri de interogare simple

 Clauza WHERE cere numai înregistrările care îndeplinesc


criteriul de selecţie specificat
 Criteriul de selecţie este o expresie care conţine obligatoriu şi un
operator adecvat tipului de dată al câmpului respectiv
 Clauza WHERE este opţională
 Clauza ORDER BY cere ordonarea în mod crescător
(ASC) sau descrescător (DESC) a rezultatelor interogării
 Ordonarea este opţională şi se poate face după unul sau mai multe
câmpuri_criteriu

[Link]@[Link] 20
Cereri de interogare complexe

 Sunt acele interogări în care apar funcţiile


 de agregare
 asocierile
 combinările

[Link]@[Link] 21
Funcţiile de agregare (de grup)

 Permit construirea unor interogări complexe, prin care utilizatorul cere


gruparea înregistrărilor care au câmpuri cu aceeaşi valoare, în scopul
efectuării unor calcule
 În standardul ISO sunt definite 5 funcţii de agregare:
 COUNT returnează numărul de valori dintr-o coloană specificată
 SUM returnează suma valorilor dintr-o coloană specificată
 AVG returnează media valorilor dintr-o coloană specificată
 MIN returnează cea mai mică valoare dintr-o coloană specificată
 MAX returnează cea mai mare valoare dintr-o coloană specificată

[Link]@[Link] 22
Funcţiile de agregare (de grup)
SELECT [domeniu] funcţie_agregat(nume_câmp) AS alias [,listă_selecţie]
FROM nume_tabel1, nume_tabel2,…
GROUP BY câmp_de_grupare
[HAVING criteriu_de_grupare]
[ORDER BY câmpuri_criteriu [ASC|DESC]];

 AS alias asociază un alias rezultatului funcţiei de agregare


 Clauza GROUP BY precizează câmpul sau câmpurile după care se face
gruparea înregistrărilor
 Clauza HAVING conţine criteriul care va fi aplicat câmpului argument al
funcţiei agregat
 Spre deosebire de WHERE, care acţionează înainte de gruparea înregistrărilor,
HAVING acţionează după definirea acesteia

[Link]@[Link] 23
Joncțiunea (JOIN)

 Limbajul SQL oferă posibilitatea de a grupa şi folosi date


din tabele diferite
 Operaţiile de asociere induse de clauza JOIN au ca rezultat
producerea tuturor combinaţiilor posibile, pentru conţinutul
informaţional al fiecărui tabel
 Noile înregistrări care rezultă în urma joncţiunii sunt
disponibile pentru selecţiile următoare
 La o asociere pot participa mai mult de 2 tabele

[Link]@[Link] 24
Joncțiunea (JOIN)

 Există mai multe categorii de joncţiuni:


 CROSS (încrucişată) – rar folosită
 ECHIVALENTĂ (echijoncţiune) – cea mai folosită – presupune
folosirea clauzei WHERE asociată cu o egalitate dorită
 NEECHIVALENTĂ (non echijoncţiune) - rar folosită - presupune
folosirea clauzei WHERE asociată cu orice alt operator de
comparare, în afară de „=”

[Link]@[Link] 25
Joncțiunea (JOIN)

SELECT [domeniu] listă_selecţie


FROM nume_tabel1, nume_tabel2,…
[WHERE criteriu_de_asociere]
[ORDER BY câmpuri_criteriu [ASC|DESC]];

 Deoarece în instrucţiunile SQL care descriu joncţiuni se


utilizează câmpuri care fac parte din tabele diferite, trebuie
specificat numele tabelului de care aparţin, folosind sintaxa
nume_tabel.nume_câmp
fără spaţii înainte sau după punct

[Link]@[Link] 26
Joncțiunea (JOIN)

 După modul de asociere a înregistrărilor din tabele,


joncţiunile pot fi:
 interne sau INNER JOIN determină o asociere a înregistrărilor
din tabele, astfel încât să rezulte un număr total de înregistrări egal
cu produsul numărului de înregistrări din fiecare tabel
 externe de stânga sau LEFT OUTER JOIN
 externe de dreapta sau RIGHT OUTER JOIN

[Link]@[Link] 27
Joncțiunea (JOIN)
SELECT [domeniu] listă_selecţie
FROM nume_tabel1
{INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabel2
ON criteriu_de_asociere
[{INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabel3
ON criteriu_de_asociere]…
[WHERE criteriu_selecţie]
[ORDER BY câmpuri_criteriu [ASC|DESC]

 JOIN specifică tabelul care va fi asociat (nume_tabel2, nume_tabel3)


celui din clauza FROM
 ON arată între ce câmpuri trebuie să existe relaţia pe care se bazează
joncţiunea. Criteriul de asociere conţine obligatoriu operatorul „=”.

[Link]@[Link] 28
Combinările (UNION)

 Când utilizatorul doreşte să vadă rezultatele mai multor interogări SELECT în


acelaşi timp, prin combinarea ieşirilor lor, se poate utiliza facilitatea UNION

SELECT listă_câmpuri FROM nume_tabel1


UNION SELECT listă_câmpuri FROM nume_tabel2
[GROUP BY câmp_de_grupare]
[HAVING criteriu_de_agregare]
[UNION SELECT listă_câmpuri FROM nume_tabel3
[GROUP BY câmp_de_grupare]
[HAVING criteriu_de_agregare]]
[UNION …]
[ORDER BY câmpuri_criteriu [ASC|DESC]];

[Link]@[Link] 29
Combinările (UNION)

 Există mai multe restricţii pentru instrucţiunile care


genereză interogările UNION:
 Numărul câmpurilor din lista de câmpuri din fiecare instrucţiune
SELECT şi UNION SELECT trebuie să fie aceeaşi
 Secvenţa de nume din fiecare listă de câmpuri trebuie să
corespundă unor intrări identice
 Este permisă utilizarea doar o dată a clauzei ORDER BY, după
ultima instrucţiune UNION SELECT

[Link]@[Link] 30
Combinările (UNION)
SELECT nume, prenume, vârstă
FROM Colaboratori2001
UNION
SELECT nume, prenume, vârstă
FROM Colaboratori2002
ORDER BY nume;

SELECT nume, prenume, vârstă


FROM Colaboratori2001
GROUP BY categoria
HAVING categoria=”student”
UNION
SELECT nume, prenume, vârstă
FROM Colaboratori2002
GROUP BY categoria
HAVING categoria=”student”

[Link]@[Link] 31
Instrucţiuni pentru manipularea datelor

 Foarte utile în exploatarea unei BD, aceste instrucţiuni se


implementează prin interogările de acţiune
 Este necesară o mare precauţie în utilizarea lor deoarece
acţiunile sunt ireversibile, putând influienţa inclusiv
integritatea referenţială a BD
 Cele mai folosite sunt
 CREATE
 INSERT
 UPDATE
 DELETE

[Link]@[Link] 32
Instrucţiuni pentru manipularea datelor CREATE

 Duc la generarea unui nou tabel pornind de la structura şi


conţinutul unor tabele deja existente
 Se foloseşte instrucţiunea SELECT ... INTO

SELECT [domeniu] (câmp1,câmp2...)


INTO tabel_nou
FROM tabel_sursa
[WHERE criteriu_de_adăugare];

[Link]@[Link] 33
Instrucţiuni pentru manipularea datelor INSERT

 Sunt folosite pentru adăugarea de înregistrări


dintr-un tabel în altul
 Există două forme ale instrucţiunii:
 INSERT ... VALUES
 INSERT ... SELECT

[Link]@[Link] 34
Instrucţiuni pentru manipularea datelor INSERT
 In primul caz se adaugă o singură înregistrare într-un
tabel, menţionându-se câmpurile şi valorile acestora
 Se utilizează pentru operaţii simple, care presupun lucrul cu
un număr redus de înregistrări

INSERT INTO nume_tabel (câmp1, câmp2...)


VALUES (valoare1, valoare2...)

[Link]@[Link] 35
Instrucţiuni pentru manipularea datelor INSERT

 Reguli
 Valorile din clauza VALUES trebuie să aibă aceeaşi natură cu
câmpurile din clauza INTO
 Mărimea valorii trebuie să fie mai mică decât dimensiunea
câmpului
 Este obligatorie corespondenţă între câmp1 şi valoare1, etc.
 Dacă un câmp are specificaţia NOT NULL, este obligatorie
introducerea unei valori pentru aceasta

[Link]@[Link] 36
Instrucţiuni pentru manipularea datelor INSERT

 În al doile caz, este posibil să se copieze mai multe


înregistrări dintr-un tabel în unul sau mai multe tabele

INSERT INTO tabel_destinaţie (câmp1, câmp2...)


SELECT [domeniu] câmp1, câmp2...
FROM tabel_sursă
WHERE criteriu_de_adăugare;

[Link]@[Link] 37
Instrucţiuni pentru manipularea datelor INSERT

 În plus faţa de regulile enunţate mai devreme, trebuie


respectate şi acestea:
 numărul şi natura câmpurilor din clauza INTO să fie
aceleaşi cu cele returnate de instrucţiunea SELECT
 dacă nu se introduce WHERE, toate înregistrările din
tabel_sursă vor fi adăugate în tabel_destinaţie

[Link]@[Link] 38
Instrucţiuni pentru manipularea datelor DELETE

 Şterg parţial sau total înregistrările dintr-un tabel


 Nu se foloseşte pentru ştergerea de valori din câmpuri
individuale, ci acţionează asupra înregistrării în totalitatea
ei
 Dacă se şterg toate înregistrările, structura de tabel rămâne,
ea putând fi eliminată numai cu DROP TABLE

[Link]@[Link] 39
Instrucţiuni pentru manipularea datelor DELETE

DELETE FROM nume_tabel


[WHERE criteriu_de_ştergere];

 Ca şi instrucţiunea INSERT, operaţia de ştergere a înregistrărilor dintr-


o tabelă poate duce la probleme de integritate referenţială în alte tabele
 Exemple

DELETE *
FROM Vânzări

DELETE *
FROM Angajaţi
WHERE Vârsta>60

[Link]@[Link] 40
Instrucţiuni pentru manipularea datelor UPDATE

 Permite introduce înregistrări noi şi permite


modificarea valorilor câmpurilor din înregistrări
existente

UPDATE nume_tabel
SET nume_câmp1=valoare1 [,nume_câmp2=valoare2]...
[WHERE criteriu_de_actualizare];

[Link]@[Link] 41
Instrucţiuni pentru manipularea datelor UPDATE

 Ca şi în celelalte locuri unde apare clauza WHERE,


restricţionarea se poate accentua folosind şi operatori
logici

Exemplu
UPDATE Comunicaţii
SET Reţea=”Orange”
WHERE Reţea=”Dialog” AND Data>#12.12.2001;

[Link]@[Link] 42
Cereri de interogare imbricate

 Scrierea unei interogări în cadrul alteia duce la apariţia unei


subinterogări, setul de rezultate obţinute de la aceasta constituind
argument pentru prima interogare
 Cele două tabele trebuie să aibă un câmp comun (nume_câmp) care va
reprezenta câmpul de legătură ce stă la baza construirii subinterogării

SELECT lista_câmpuri
FROM tabel1
WHERE tabel1.nume_câmp=
(SELECT nume_câmp
FROM tabel2
WHERE criteriu_de_selecţie);

[Link]@[Link] 43

S-ar putea să vă placă și