Sunteți pe pagina 1din 3

BAZE DE DATE – SEMINAR 3

___________________________________________________________________________

ACTUALIZAREA TABELELOR - COMENZI LMD


(Data Manipulation Language – Limbaj de Manipulare a Datelor)
Comanda Scop
INSERT Adaugă o nouă înregistrare în tabelă
UPDATE Modifică valorile unor înregistrări din tabele
DELETE Șterge înregistrări din tabele
MERGE Actualizează o tabelă în funcție de anumite condiții
SELECT Regăsește înregistrări în tabele sau vederi (view).
După actualizarea datelor se va utiliza comanda SELECT * FROM nume_tabela; pentru a
vizualiza rezultatele!
ADĂUGAREA ÎNREGISTRĂRILOR – COMANDA INSERT
Înregistrările se pot adăuga în tabele în mai multe moduri:
- precizând explicit în sintaxa comenzii valorile
- cu ajutorul variabilelor de substituție
- pe baza valorilor din alte tabele

a) Precizarea explicită a valorilor introduse se realizează cu comanda:


INSERT INTO nume_tabela
VALUES (lista de valori pentru fiecare coloană în ordinea în care sunt declarate coloanele în tabelă);
Atenție! Trebuie precizate valori pentru toate coloanele tabelei.

O variantă a acestei comenzi este următoarea:


INSERT INTO nume_tabela (lista de coloane)
VALUES (lista de valori pentru fiecare coloană);

Exemplu 1. Să creeze tabela salariati pe baza tabelei angajați fără a prelua și înregistrările
(doar structura) și să se adauge un nou angajat.
CREATE TABLE salariati AS SELECT * FROM angajati WHERE 2=3;
INSERT INTO salariati (id_angajat, nume, salariul) VALUES (207, 'Ionescu', 4000);
INSERT INTO salariati (id_angajat, nume, salariul) VALUES (207, 'Popescu', 4200);
SELECT * FROM salariati;

Pagina 1 din 3
BAZE DE DATE – SEMINAR 3
___________________________________________________________________________

b) Adăugarea înregistrărilor pe baza valorilor din alte tabele:


INSERT INTO nume_tabela SELECT */lista de coloane
FROM tabela_sursa
[WHERE conditie];

Exemplul 2. Să se adauge în tabela salariati toți angajații din tabela angajați care lucrează în
departamentele 20, 30 și 50. Și să se finalizeze tranzacția (salvarea modificării).
INSERT INTO salariati SELECT * FROM angajati
WHERE id_departament IN (20, 30, 50);
SELECT * FROM salariati;
COMMIT;

c) Utilizarea variabilelor de substituție pentru adăugarea înregistrărilor pe baza


valorilor introduse de utilizator de la tastatură:
INSERT INTO nume_tabela (lista coloane)
VALUES (&valoare_coloana1, &valoare_coloana2,...);

Exemplul 3. Să se adauge în tabela salariați un angajat ale cărui date sunt introduse de utilizator
de la tastatura.
Atenție! Pentru data_angajare se va utiliza functia de conversie TO_DATE.
Ex: TO_DATE('jan 20, 2005','mon dd, yyyy')
INSERT INTO salariati (id_angajat, nume, data_angajare, salariul)
VALUES ('&id_angajat','&nume', TO_DATE('&data_angajare', 'mon dd, yyyy'), '&salariul');

MODIFICAREA DATELOR – COMANDA UPDATE


Sintaxa comenzii este:
UPDATE nume_tabela SET nume_coloana = valoare
[WHERE conditie];

Exemplul 4. Să se crească cu 100 salariul angajaților din tabela salariați care au salariul
mai mic decât 3000:
UPDATE salariati
SET salariul=salariul+100
WHERE salariul<3000;
SELECT * FROM salariati;

Exemplul 5. Să se actualizeze salariul angajaților al căror manager are id = 122 cu salariul


angajatului cu id = 125.
UPDATE salariati
SET salariul=(SELECT salariul FROM salariati WHERE id_angajat=125)
WHERE id_manager=122;

Pagina 2 din 3
BAZE DE DATE – SEMINAR 3
___________________________________________________________________________

Exemplul 6. Să se actualizeze salariul și comisionul angajaților din tabela salariați cu salariul


și comisionul anagajatului cu id_angajat = 167 din tabela angajați, doar pentru angajații care
au salariul mai mic decât salariul angajatului cu id = 173 din tabela angajați și care lucrează
în departamentul 50.
UPDATE salariati SET (salariul, comision)=(SELECT salariul, comision FROM angajati
WHERE id_angajat=167)
WHERE salariul < (SELECT salariul from angajati WHERE id_angajat = 173) AND
id_departament =50;
STERGEREA DATELOR – COMANDA DELETE
Sintaxa comenzii este:
DELETE FROM nume_tabela
WHERE condiție;
Exemplul 7. Să se șteargă angajații din tabela salariați care au id_manager egal cu 122 sau
123.
DELETE FROM salariati
WHERE id_manager IN (122, 123);
Exemplul 8. Să se șteargă angajații din tabela salariați angajați înainte de anul 1999.
FROM salariati
WHERE data_angajare<TO_DATE('01-01-1999','DD-MM-YYYY');
Exemplul 9. Să se șteargă toți angajații din tabela salariați. Să se anuleze tranzacția.
DELETE FROM salariati;
SELECT * FROM salariati;
ROLLBACK;
SELECT * FROM salariati;

ACTUALIZAREA DATELOR CU COMANDA MERGE


Sintaxa comenzii este:
MERGE INTO nume_tabela USING nume_tabela_sursa
ON (conditia_de_legatura)
WHEN MATCHED THEN
UPDATE SET nume_coloana=valoare
WHEN NOT MATCHED THEN
INSERT VALUES (lista_valori);

Exemplul 10. Să se actualizeze tabela salariați astfel încât toți salariații din tabela salariați să
aibă salariile egale cu cei din tabela angajați, iar pentru cei care nu sunt în tabela salariați să se
adauge valorile coloanelor (id_angajat, nume, salariul) din tabela sursă agajați. Să se numere
înregistrările din cele două tabele și să se explice diferența. Să se finalizeze tranzacția.
MERGE INTO salariati USING angajati
ON (salariati.id_angajat = angajati.id_angajat)
WHEN MATCHED THEN
UPDATE SET salariati.salariul=angajati.salariul
WHEN NOT MATCHED THEN
INSERT (id_angajat, nume, salariul) VALUES (angajati.id_angajat, angajati.nume,
angajati.salariul);
SELECT COUNT (*) FROM salariati;
SELECT COUNT (*) FROM angajati;
COMMIT;

Pagina 3 din 3

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