Sunteți pe pagina 1din 4

Facultatea de Științe Economice

Specializarea CONTABILITATE ȘI INFORMATICĂ DE GESTIUNE


Laborator Sisteme Informatice de Gestiune - ORACLE – Actualizarea tabelelor – Comenzi DML

I.3. ACTUALIZAREA TABELELOR - COMENZI DML (DATA MANIPULATION


LANGUAGE)

Comanda Scop
INSERT Adauga o noua inregistrare in tabela
SELECT Regaseste inregistrari in tabele sau vederi.
DELETE Sterge inregistrari din tabele
UPDATE Modifica valorile unor inregistrari din tabele
MERGE Actualizeaza o tabela in functie de anumite conditii

Dupa actualizarea datelor se va utiliza comanda select * from [nume_tabela_actualizata];


pentru a vizualiza rezultatel!

1.3.1. INSERAREA DATELOR – COMANDA INSERT


Datele se pot insera 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 TABELA VALUES ([LISTA DE VALORI PENTRU FIECARE


ATRIBUT]);

Exemplu - vezi scriptul pt inserarea inregistrarilor in tabelele utilizate ca exemplu.


Descarcati de pe site scriptul INSERARE.SQL!
Rulati scriptul cu comanda:

@ c:\inserare.sql

b) Inserarea datelor pe baza valorilor din alte tabele:

INSERT INTO TABELA SELECT [LISTA DE CAMPURI]


FROM TABELA_SURSA
WHERE [CONDITIE];

Exemple:

1) Sa se creeze tabela STOC_MIN cu aceeasi structura cu a tabelei PRODUSE care sa


contina informatii depre produsele cu stocul mai mic decat 1000 unitati.

Create table stoc_min as select * from produse where 2=3;

Insert into stoc_min select *


from produse where stoc<=1000;

select * from stoc_min;

1
Facultatea de Științe Economice
Specializarea CONTABILITATE ȘI INFORMATICĂ DE GESTIUNE
Laborator Sisteme Informatice de Gestiune - ORACLE – Actualizarea tabelelor – Comenzi DML

2) Sa se creeze tabela STOC_MEDIU si STOC_MAX cu aceeasi structura cu a tabelei


PRODUSE care sa contina informatii depre produse astfel: daca stocul este cuprins intre 1001
si 3000 unitati se insereaza in tabela STOC_MEDIU, iar daca stocul > 3000 unitati se
insereaza in tabela STOC_MAX.

Create table stoc_mediu as select * from produse where 2=3;


Create table stoc_max as select * from produse where 2=3;

Insert all
When stoc between 1001 and 3000 then insert into stoc_mediu
When stoc > 3000 then insert into stoc_max
Select * from produse;

c) Optional: Utilizarea variabilelor de substitutie pentru inserarea inregistrarilor


introduse de utilizator:

!!!Scripturile de mai jos se ruleaza doar in mediu SQL*PLUS:

INSERT INTO TABELA VALUES ([&var_camp1, &var_camp2...]);

Exemplu:

INSERT INTO agenti (codagent, numeagent, dataang, datanast, zona, functia, codsef)
VALUES (‘&v_codagent’,'&v_numeagent', TO_DATE(‘&v_dataang’, ‘mon dd, yy’),
TO_DATE(‘&v_datanast’, ‘mon dd, yy’), '&v_zona','&v_codsef', '&v_functia');

Sau cu ajutorul mesajelor catre utilizator. Se utilizeaza functia ACCEPT pentru citirea si
incarcarea valorilor introduse in variabile si functia PROMPT pentru afiarea pe ecran a unui
mesaj:

ACCEPT v_codagent PROMPT 'INTRODUCETI CODUL AGENTULUI:'


ACCEPT v_numeagent PROMPT 'INTRODUCETI NUMELE AGENTULUI:'
ACCEPT v_dataang PROMPT 'INTRODUCETI DATA ANGAJARII:'
ACCEPT v_datanast PROMPT 'INTRODUCETI VARSTA AGENTULUI:'
ACCEPT v_zona PROMPT 'INTRODUCETI ZONA AGENTULUI:'
ACCEPT v_codsef PROMPT 'INTRODUCETI COD SEF:'
ACCEPT v_functia PROMPT 'INTRODUCETI FUNCTIA:'

INSERT INTO agenti (codagent, numeagent, dataang, datanast, zona, functia, codsef)
VALUES (‘&v_codagent’,'&v_numeagent', TO_DATE(‘&v_dataang’, ‘mon dd, yy’),
TO_DATE(‘&v_datanast’, ‘mon dd, yy’), '&v_zona','&v_codsef', '&v_functia');

Atentie! Pt dataang si datanast se va utiliza functia de conversie to_date.


Ex: to_date('jan 20,05','mon dd,yy')

1.3.2. MODIFICAREA DATELOR – COMANDA UPDATE


Sintaxa este:

2
Facultatea de Științe Economice
Specializarea CONTABILITATE ȘI INFORMATICĂ DE GESTIUNE
Laborator Sisteme Informatice de Gestiune - ORACLE – Actualizarea tabelelor – Comenzi DML

UPDATE [TABELA]
SET [COLOANA] = [VALOARE]
WHERE [CONDITIE];

Exemple:
Sa se scada cu 100 de pachete stocul de servetele:

UPDATE PRODUSE
SET STOC=STOC-100
WHERE lower(denprodus)='servetele';

SELECT * FROM PRODUSE;

Sa se actualizeze pretul si stocul produsului 333 cu pretul si stocul produsului cu codul


111:

UPDATE PRODUSE
SET (PRET,STOC)=(SELECT PRET, STOC FROM PRODUSE
WHERE CODPRODUS='111')
WHERE CODPRODUS=’333’;

Sa se actualizeze pretul si stocul produselor cu pretul si stocul produsului cu codul 111


numai pentru rodusele aflate in comanda cu nr 400:

UPDATE PRODUSE
SET (PRET,STOC)=(SELECT PRET, STOC FROM PRODUSE WHERE
CODPRODUS='111')
WHERE CODPRODUS IN (SELECT CODPRODUS FROM RINDCOM WHERE
NRCOM=400);

1.3.3. STERGEREA DATELOR – COMANDA DELETE

Sintaxa este:
DELETE FROM [TABELA]
WHERE [CONDITIE];

Exemple:
Sa se sterga produsele comandate pt care cant<200;

DELETE FROM rindcom


WHERE cant<200;

Sa se sterga produsele comandate pt care termen livrare>feb 2005:

DELETE FROM rindcom


WHERE termenliv>TO_DATE('01-02-05','DD-MM-YY');

3
Facultatea de Științe Economice
Specializarea CONTABILITATE ȘI INFORMATICĂ DE GESTIUNE
Laborator Sisteme Informatice de Gestiune - ORACLE – Actualizarea tabelelor – Comenzi DML

Sa se sterga toate inregistrarile din tabela stoc_min:

DELETE FROM stoc_min;

1.3.4. ACTUALIZAREA DATELOR CU COMANDA MERGE

SINTAXA COMENZII:

MERGE INTO [TABELA] USING [TABELA_SURSA]


ON [CONDITIA DE LEGATURA]
WHEN MATCHED THEN
UPDATE SET [COLOANA]=[VALOARE]
WHEN NOT MATCHED THEN
INSERT VALUES ([LISTA VALORI]);

Exemplu:
Sa se actualizeze tabela stoc_mediu astfel incat toate stocurile sa fie egale cu stocul
mediu din tabela produse. Apoi sa e realizeze o actualizare prin comparatie intre tabela
stoc_mediu si produse astfel incat cele doua sa contina date identice:

Update stoc_mediu
Set stoc= (select avg(stoc) from produse);

Merge into stoc_mediu using produse


On stoc_mediu.codprodus = produse.codprodus
When matched then
Update set stoc_mediu.stoc=produse.stoc
When not matched then
Insert into stoc_mediu;

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