Documente Academic
Documente Profesional
Documente Cultură
1. Preambul
2. Inserarea liniilor prin INSERT
3. Stergerea liniilor
4. Actualizarea datelor
5. Cereri MERGE
6. Consistenta la citire, blocari implicite, tranzactii
7. Vederi
Sunt posibile doua tipuri de comenzi SQL pentru inserarea de date intr-
o tabela:
• INSERT
• MERGE
1. Inserarea liniilor prin specificarea valorilor
INSERT INTO nume_tabela [(lista_coloane)]
VALUES (lista_valori)
Daca nu se precizeaza lista coloanelor se obtine:
• O linie completa inserata
• Numarul valorilor inserate este egal cu numarul de coloane
• Ordinea valorilor si tipul de data este acelasi cu cel al coloanelor
• Daca o coloana este nula se specifica NULL
• Daca o coloana are valoare implicita se specifica DEFAULT, altfel
valoarea
• Fiecare linie necesita o cerere separata
Sintaxa:
DELETE FROM nume_tabela
[WHERE conditie]
In clauza WHERE pot aparea acelasi conditii ca la cererile SELECT si
chiar subcereri
Daca WHERE nu exista se sterg toate liniile tabelei.
Ex: DELETE FROM Angajat WHERE D_nr=5
DELETE FROM Angajat
WHERE ssn IN (SELECT ssn FROM Lucreaza
WHERE Ore BETWEEN 2 and 10)
Obs: Cererea va returana o eroare daca una dintre liniile ce
indeplinesc conditia contine o cheie referita printr-o constrangere de
tip FOREIGN KEY intr-o tabela din baza de date
Sintaxa:
UPDATE nume_tabela
SET col1=expresie1 [, col2=expresie2, …. ]
[WHERE conditie]
Obs:
• In WHERE pot sa para aceleazi conditii ca la cererile SELECT
• Daca WHERE lipseste se actualizeaza toate liniile, altfel numai cele
care indeplinesc conditia
• O coloana nu poate sa apara in SET de mai multe ori
Ex: UPDATE Angajat SET Salariu=Salariu*1.1 WHERE D_nr=4
UPDATE Angajat SET Adresa = DEFAULT
UPDATE Angajat SET Functia = NULL
Cererea efectueaza fie actualizarea fie inserarea unor linii intr-o tabela
dupa cum indeplineste sau nu conditia de join. Sintaxa:
MERGE INTO nume_tabela1 [alias tabela1]
USING nume_tabela2 | nume_vedere | subcerere
ON (conditie join)
WHEN MATCHED THEN
UPDATE SET col1=expr1 [,col2=expr2, ….]
WHEN NOT MATCHED THEN
INSERT [(lista_coloane)] VALUES (lista_valori)
Ex: MERGE INTO Dep_info
USING (SELECT D_nr, COUNT(*) AS Nr FROM Angajat GROUP
BY D_nr)
ON (Dep_nr=D_nr)
WHEN MATCHED THEN
UPDATE SET Dep_info.nr_ang = Nr
WHEN NOT MATCHED THEN
INSERT VALUES (D_nr, Nr)
Baze de date Curs 9 9
6. Consistenta la citire, blocari implicite, tranzactii
Tranzactii
O tranzactie este o succesiune de operatii SQL-DML care poate fi
incheiata prin scrierea in baza sau revocata. Operatiile DDL si DCL
nu pot fi vazute ca tranzactii si nu pot fi revocate.