baze de date

5
BAZE DE DATE – SEMINAR 3 _______________________________________________________________ ____________ ACTUALIZAREA TABELELOR - COMENZI LMD (Data Manipulation Language – Limbaj de Manipulare a Datelor) Comanda Scop INSERT Adauga o noua inregistrare in tabela UPDATE Modifica valorile unor inregistrari din tabele DELETE Sterge inregistrari din tabele MERGE Actualizeaza o tabela in functie de anumite conditii SELECT Regaseste inregistrari in tabele sau vederi (view). Dupa actualizarea datelor se va utiliza comanda SELECT * FROM nume_tabela; pentru a vizualiza rezultatele! ADAUGAREA INREGISTRARILOR – COMANDA INSERT Inregistrarile se pot adauga in tabele in mai multe moduri: - precizand explicit in sintaxa comenzii valorile - cu ajutorul variabilelor de substitutie - pe baza valorilor din alte tabele a) Precizarea explicita a valorilor introduse se realizeaza cu comanda: INSERT INTO nume_tabela VALUES (lista de valori pentru fiecare coloana in ordinea in care sunt declarate coloanele in tabela); Atentie! Trebuie precizate valori pentru toate coloanele tabelei. Vezi scriptul pentru adaugarea inregistrarilor in tabelele utilizate ca exemplu. Descarcati de pe site scriptul de adaugare http://bd.ase.ro/uploads/bd_seminar_zi/ru_lmd.txt O varianta a acestei comenzi este urmatoarea: INSERT INTO nume_tabela (lista de coloane) VALUES (lista de valori pentru fiecare coloana); Exemplu 1. Sa creeze tabela salariati pe baza tabelei angajati fara a prelua si inregistrarile (doar structura) si sa 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); 1

description

introducerebaze de date

Transcript of baze de date

Page 1: baze de date

BAZE DE DATE – SEMINAR 3___________________________________________________________________________

ACTUALIZAREA TABELELOR - COMENZI LMD (Data Manipulation Language – Limbaj de Manipulare a Datelor)

Comanda ScopINSERT Adauga o noua inregistrare in tabelaUPDATE Modifica valorile unor inregistrari din tabeleDELETE Sterge inregistrari din tabeleMERGE Actualizeaza o tabela in functie de anumite conditiiSELECT Regaseste inregistrari in tabele sau vederi (view).

Dupa actualizarea datelor se va utiliza comanda SELECT * FROM nume_tabela; pentru a vizualiza rezultatele!

ADAUGAREA INREGISTRARILOR – COMANDA INSERTInregistrarile se pot adauga in tabele in mai multe moduri:

- precizand explicit in sintaxa comenzii valorile- cu ajutorul variabilelor de substitutie- pe baza valorilor din alte tabele

a) Precizarea explicita a valorilor introduse se realizeaza cu comanda:INSERT INTO nume_tabela VALUES (lista de valori pentru fiecare coloana in ordinea in care sunt declarate coloanele in tabela);Atentie! Trebuie precizate valori pentru toate coloanele tabelei.

Vezi scriptul pentru adaugarea inregistrarilor in tabelele utilizate ca exemplu. Descarcati de pe site scriptul de adaugare http://bd.ase.ro/uploads/bd_seminar_zi/ru_lmd.txt

O varianta a acestei comenzi este urmatoarea:INSERT INTO nume_tabela (lista de coloane) VALUES (lista de valori pentru fiecare coloana);Exemplu 1. Sa creeze tabela salariati pe baza tabelei angajati fara a prelua si inregistrarile (doar structura) si sa se adauge un nou angajatCREATE 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, 'Poppescu', 4200);SELECT * FROM salariati;

b) Adaugarea inregistrarilor pe baza valorilor din alte tabele:

1

Page 2: baze de date

BAZE DE DATE – SEMINAR 3___________________________________________________________________________

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

Exemplul 2. Sa se adauge in tabela salariati toti angajatii din tabela angajati care lucreaza in departamentele 20, 30 si 50. Si sa se finalizeze tranzactia (salvarea modificarii).INSERT INTO salariati SELECT * FROM angajati WHERE id_departament IN (20, 30, 50);

SELECT * FROM salariati;

COMMIT;

c) Utilizarea variabilelor de substitutie pentru adaugarea inregistrarilor pe baza valorilor introduse de utilizator de la tastatura:INSERT INTO nume_tabela (lista coloane) VALUES (&valoare_coloana1, &valoare_coloana2,...);

Exemplul 3. Sa se adauge in tabela salariati un angajat ale carui date sunt introduse de utilizator de la tastaturaINSERT INTO salariati (id_angajat, nume, data_angajare, salariul)VALUES ('&id_angajat','&nume', TO_DATE('&data_angajare', 'mon dd, yyyy'), '&salariul');

Atentie! Pentru data_angajare se va utiliza functia de conversie TO_DATE.Ex: TO_DATE('jan 20, 2005','mon dd, yyyy')

MODIFICAREA DATELOR – COMANDA UPDATESintaxa comenzii este: UPDATE nume_tabela SET nume_coloana = valoare[WHERE conditie];

Exemplul 4. Sa se creasca cu 100 salariul angajatilor din tabela salariati care au salariul mai mic decat 3000: UPDATE salariatiSET salariul=salariul+100WHERE salariul<3000 AND comision IS NULL;SELECT * FROM salariati;

Exemplul 5. Sa se actualizeze salariul angajatilor al caror manager are id = 122 cu salariul angajatului cu id = 125. UPDATE salariatiSET salariul=(SELECT salariul FROM salariati WHERE id_angajat=125)WHERE id_manager=122;

Exemplul 6. Sa se actualizeze salariul si comisionul angajatilor din tabela salariati cu salariul si comisionul anagajatului cu id_angajat = 167 din tabela angajati, doar pentru angajatii care au salariul mai mic decat salariul angajatului cu id = 173 din tabela angajati si care lucreaza in departamentul 50. UPDATE salariati SET (salariul, comision)=(SELECT salariul, comision FROM angajati WHERE id_angajat=167)

2

Page 3: baze de date

BAZE DE DATE – SEMINAR 3___________________________________________________________________________

WHERE salariul < (SELECT salariul from angajati WHERE id_angajat = 173) AND id_departament =50;

STERGEREA DATELOR – COMANDA DELETESintaxa comenzii este: DELETE FROM nume_tabelaWHERE conditie;

Exemplul 7. Sa se stearga angajatii din tabela salariati care au id_manager egal cu 122 sau 123.DELETE FROM salariatiWHERE id_manager IN (122, 123);

Exemplul 8. Sa se sterga angajatii din tabela salariati angajati inainte de anul 1999. DELETE FROM salariatiWHERE data_angajare<TO_DATE('01-01-1999','DD-MM-YYYY');

Exemplul 9. Sa se sterga toti angajatii din tabela salariati. Sa se anuleze tranzactia.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_sursaON (conditia_de_legatura)WHEN MATCHED THENUPDATE SET nume_coloana=valoareWHEN NOT MATCHED THENINSERT VALUES (lista_valori);

Exemplul 10. Sa se actualizeze tabela salariati astfel incat toti salariatii din tabela salariati sa aiba salariile egale cu cei din tabela angajati, iar pentru cei care nu sunt in tabela salariati sa se adauge valorile coloanelor (id_angajat, nume, salariul) din tabela sursa agajati. Sa se numere inregistrarile din cele doua tabele si sa se explice diferenta. Sa se finalizeze tranzactia.

MERGE INTO salariati USING angajati ON (salariati.id_angajat = angajati.id_angajat)WHEN MATCHED THEN UPDATE SET salariati.salariul=angajati.salariulWHEN NOT MATCHED THENINSERT (id_angajat, nume, salariul) VALUES (angajati.id_angajat, angajati.nume, angajati.salariul);

3

Page 4: baze de date

BAZE DE DATE – SEMINAR 3___________________________________________________________________________

SELECT COUNT (*) FROM salariati;SELECT COUNT (*) FROM angajati;COMMIT;

4