Sunteți pe pagina 1din 4

CAPITOLUL 5.

INCARCAREA SI ACTUALIZAREA DATELOR CU COMENZI SQL


5.1. ADUGAREA DE NOI TUPLURI Actualizarea datelor se refer la adugarea unor noi rnduri ntr-o tabel (cu comanda INSERT), la modificarea valorilor uneia sau mai multor valori dintr-un rnd (cu comanda UPDATE) i la tergerea unui rnd dintr-o tabel (cu comanda DELETE). n vederea adugarii unor rnduri noi ntr-o tabel sau ntr-o viziune se utilizeaz comanda: INSERT INTO nume-tabel [(nume-col1,nume-col2,...)] {VALUES (valoare 1,valoare2,...) | cerere ); Pentru nume-col1,nume-col2... precizate n paranteze vor fi furnizate valorile corespunztoare, iar coloanelor nespecificate le sunt ataate valori nule. Coloanele pot fi precizate n orice ordine, ns trebuie asigurat corespondena ntre numele coloanelor i valorile furnizate. n cazul n care anumite coloane nu sunt specificate explicit se impune ca ordinea n care apar valorile n comanda INSERT s coincid cu cea n care coloanele au fost definite la crearea tabelei. Dac nu se mai cunoate ordinea de declarare a coloanelor se folosete comanda DESCRIBE care va afia lista coloanelor definite pentru tabela respectiv, tipul i lungimea lor. Prin forma INSERT...VALUES se introduce n tabel un singur rnd. Cu ajutorul valorii NULL se pot introduce valori nule. Pentru a furniza valori pentru o coloan de tip dat calendaristic se poate folosi funcia TO_DATE sau cuvntul cheie SYSDATE. Funcia TO_DATE permite furnizarea valorilor ntr-un format diferit de cel standard. Specificarea cererii din comanda INSERT determin copierea unor date dintr-o tabel n alta pe attea rnduri cte au rezultat din cererea SQL. Exemple: 1) S se adauge un nou rnd n tabela PRODUSE. SQL> INSERT INTO PRODUSE VALUES

1 (100000,11111,'MESE 15/20',7,'27-JUN-92,BUC') 1 record created. 2) S se creeze o nou tabel, EXEMPLU, cu un singur cmp numeric, identic cu coloana CODP a tabelei PRODUSE. S se introduc n aceast nou tabel codul produselor din tabela PRODUSE. SQL> CREATE TABLE EXEMPLU 2 (CODP NUMBER(6) NOT NULL); Table created. SQL> INSERT INTO EXEMPLU 2 SELECT CODP FROM PRODUSE; 5 records created. 5.2. MODIFICAREA TUPLURILOR DIN TABELE n funcie de momentul n care se dorete realizarea modificrilor asupra bazei de date, utilizatorul poate folosi una din urmtoarele comenzi: SET AUTOCOMMIT IMM[EDIATE] (schimbrile se efectueaz imediat); SET AUTOCOMMIT OFF (schimbrile sunt pstrate ntr-un buffer).La execuia comenzii COMMIT se permanentizeaz schimbrile efectuate, iar la execuia comenzii ROLLBACK se renun la schimbrile realizate. n scopul modificrii datelor dintr-o tabel se utilizeaz una din formele sintactice ale comenzii UPDATE: UPDATE nume-tabel [sinonim] SET nume-crt=expresie,nume -expresie,... [WHERE condiie]; UPDATE nume-tabel [sinonim] SET (nume-col, nume-col,...)=(subcerere) [WHERE condiie]; Sunt dou posibilitati de modificare. Una const n furnizarea n mod explicit a fiecarei valori pentru cmpurile care trebuie modificate iar cealalt posibilitate const n obinerea valorilor n urma unei cereri SQL. Dac nu este specificat clauza WHERE se vor modifica toate rndurile tabelei. (nume-col,nume-col,...)=(subeercre) impune ca cererea s conin pentru fiecare rnd un numr de valori corespunztor numrului de coloane din

paranteza care precede caracterul =. n cazul n care se modifse o singur coloan, parantezele pot fi omise. Exemple: 1) S se modifice cmpul NRSAL din tabela SALARIAI, pentru depozitul cu codul 130000, atribuindu-i valoarea 11. SQL> UPDATE DEPOZITE 2 SET NRSAL=11 3 WHERE CODD= 130000; 1 record updated. 2) S se modifice data de livrare, cantitatea solicitat i preul de livrare pentru produsul cu codul 13333 din comanda cu numrul 211111. SQL> UPDATE COMENZI 2 SET DATAL=SYSDATE,CANT=50, PRET=42000 3 WHERE CODP=13333 AND 4 NRCOM=211111; 1 record updated. 3) S se modifice data de livrare cu data actual pentru toate produsele cu codul egal cu 13333, din toate comenzile. SQL> UPDATE COMENZI 2 SET DATAL=SYSDATE 3 WHERE CODP=13333; 1 record updated. 4) S se mreasc salariul cu 15% pentru salariaii care au o funcie identic cu CARMEN ANA. SQL> UPDATE SALARIAI 2 SET SALA=SALA*1.15 3 WHERE FUNCT IN 4 (SELECT FUNCT 5 FROM SALARIAI 6 WHERE NUME='CARMEN ANA'); 11 records updated.

5.3. TERGEREA TUPLURILOR DIN TABELE tergerea unor rnduri dintr-o tabel se realizeaz cu urmtoarea comand: DELETE FROM nume tabela [WHERE condiie]; Folosirea clauzei WHERE determin tergerea acelor rnduri care ndeplinesc condiia impus. n aceast clauz pot fi folosite i subcereri. Dac nu este specificat nici o condiie, se terg toate rndurile tabelei. tergerile accidentale pot fi omise, restaurndu-se valorile iniiale prin comanda AUTOCOMMIT OFF. Exemple: 1) S se tearg datele din tabela DEPOZITE. SQL> DELETE FROM DEPOZITE; 5 records deleted. 2) S se tearg datele pentru depozitele care au codul mai mare sau egal cu 100000. SQL> DELETE FROM DEPOZITE 2 WHERE CODD>=100000; 2 records deleted. 3) S se scrie comanda pentru tergerea datelor despre salariatul VLAD VASILE. tergerile s nu fie efectuate imediat ci ulterior. SQL> SET AUTOCOMMIT OFF SQL> DELETE FROM SALARIAI 2 WHERE NUME='VLAD VASILE'; 1 record deleted. SQL> COMMIT ; 4) S se tearg datele salariailor care au aceeai funcie cu a lui PAUL TEFAN. tergerile s nu fie realizate imediat. Ulterior s se renune la aceste tergeri. SQL> SET AUTOCOMMIT OFF SQL> DELETE FROM SALARIAI 2 WHERE FUNCT IN 3 (SELECT FUNCT FROM SALARIAI 4 WHERE NUME='PAUL TEFAN'); 5 records deleted.

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